Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 29, 2014 12:10:22

django314
Зарегистрирован: 2014-04-02
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

написать Mixin

Заметил, что в представлениях повторяется код для def form_valid.
Как его вынести в mixin?

class MyCreate1(LoginRequiredMixin,CreateView):
    model = MyModel1
    def form_valid(self, form):
        instance = ...
        return super(MyCreate1, self).form_valid(form)

Отредактировано django314 (Апрель 29, 2014 12:10:42)

Офлайн

#2 Апрель 29, 2014 12:20:46

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

написать Mixin

django314
надо-бы почитать книгу по питону, если такие вопросы возникают.

Офлайн

#3 Апрель 29, 2014 12:25:20

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

написать Mixin

Просто что-бы понять порядок вызова

class Class(object):
    def printt(self):
        print "Class"
class Mixin1(Class):
    def printt(self):
        print "Mixin1"
        super(Mixin1, self).printt()
class Mixin2(Class):
    def printt(self):
        super(Mixin2, self).printt()
        print "Mixin2"
Mixin1().printt()
print '\n'
Mixin2().printt()
Передача данных
class Class(object):
    def ret(self, arg):
        print "Class", arg
        return arg
class Mixin1(Class):
    def ret(self,arg):
        print "Mixin1", arg
        return super(Mixin1, self).ret(arg)
class Mixin2(Class):
    def ret(self,arg):
        print "Mixin2", arg
        return super(Mixin2, self).ret(arg)
Mixin1().ret('aaaa')
print '\n'
Mixin2().ret('bbbb')
Передача данных+ модифицирование данных + не поленился на создание двух переменных
class Class(object):
    def ret(self, arg):
        arg = arg + arg
        print "Class", arg
        return arg
class Mixin1(Class):
    def ret(self,arg):
        arg = arg + arg*3
        print "Mixin1", arg
        return super(Mixin1, self).ret(arg)
class Mixin2(Class):
    def ret(self,arg):
        arg = arg + arg*2
        print "Mixin2", arg
        return super(Mixin2, self).ret(arg)
m1  = Mixin1()
m1.ret('aaaa')
print '\n'
m2 = Mixin2()
m2.ret('bbbb')

Отредактировано Singularity (Апрель 29, 2014 12:33:29)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version