Python 如何在django泛型视图中重写父类中的方法

Python 如何在django泛型视图中重写父类中的方法,python,django,Python,Django,我使用的是基于类的泛型视图 class MyView(UpdateView): model = MyModel success_url = "/test/list" 现在这个工作很好 但是我想创建父类,以便我的所有视图都继承自父类,并像这样定义success\u url class MyMixin(object): def __init__(self, *args, **kwargs): self.success_url ="/test/list?myv

我使用的是基于类的泛型视图

class MyView(UpdateView):
    model = MyModel
    success_url = "/test/list"
现在这个工作很好

但是我想创建父类,以便我的所有视图都继承自父类,并像这样定义
success\u url

class MyMixin(object):
    def __init__(self, *args, **kwargs):
        self.success_url ="/test/list?myvar=true"
然后


但是我的
success\u url

没有被覆盖,这是因为您没有修改实例变量,而是修改同名的局部变量。

就像@phoenix建议的那样,在类myView中创建MyMixin的实例,如下所示

class myview(updateview,MyMixin):
    myVar=MyMixin("a") #just an e.g
    print myVar.success_url
输出: /测试/列表?myvar=true

我会这么做

class MyMixinView(object):

    def get_success_url(self):
        return "/test/list"

class ChildUpdateView(UpdateView, MyMixinView):
    model = MyModel

HTH..

您必须将
myMixin
放在
Updateview
之前,因为Updateview已经有了get\u success\u url

这应该行得通

class MyMixin(object):
    def get_success_url(self):
        return "/test/list"

class MyView(MyMixin, UpdateView):
    model = MyModel

这是因为
success\u url
不是一个实例变量,但它也可能与缩进有关。请先修正缩进。那只是打字错误。但是我怎样才能完成我的任务呢?你可以通过一个MyMixin实例来完成,比如:MyMixin_inst.success_url='/some/url/'你能用更多的例子写一些吗。我不明白,我试过了,也没用。它说没有要重定向的url。系统无法从中获取url
class MyMixin(object):
    def get_success_url(self):
        return "/test/list"

class MyView(MyMixin, UpdateView):
    model = MyModel