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