Найти - Пользователи
Полная версия: написать Mixin
Начало » Django » написать Mixin
1
django314
Заметил, что в представлениях повторяется код для def form_valid.
Как его вынести в mixin?

class MyCreate1(LoginRequiredMixin,CreateView):
    model = MyModel1
    def form_valid(self, form):
        instance = ...
        return super(MyCreate1, self).form_valid(form)
Singularity
django314
надо-бы почитать книгу по питону, если такие вопросы возникают.

Singularity
Просто что-бы понять порядок вызова
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')
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB