基于 Django class 的视图中的自定义函数未被覆盖
Custom Function in Django class based view not being overriden
我有一个父视图和一个子视图。我想像这样覆盖子视图中的一个自定义函数:
我的网址:
path('<int:place_id>/add_images/', AddImages.as_view(), name="add-images"),
path('<int:place_id>/edit/images/', EditImages.as_view(), name="edit-images"),
# PARENT:
class AddImages(LoginRequiredMixin, View):
template_name = images/add_images.html
# HERE I GET THE CURRENT URL:
def next_url(self):
next_url = "?next={0}".format(self.request.path)
print("NEXT URL:" + str(next_url))
return next_url
# AND I USE IT HERE:
def post(self, request, **kwargs):
# ...
next_url = self.next_url()
data = {'next_url' : next_url }
return JsonResponse(data)
# CHILD:
class EditImages(AddImages):
"""
Inherits from ImagesView. overwrites template and next_url
"""
template_name = "images/edit_images.html"
def next_url(self):
next_url = "?next={0}".format(self.request.path)
print("CHILD URL2:" + str(next_url))
return next_url
我想覆盖父视图 next_url 并将其传递给 post()
当前输出仅打印:"NEXT URL: ..."
我该如何解决这个问题?
提前致谢
您的观点代码是正确的。
您的 edit_images.html
模板很可能 POST 到 AddImages
视图,这使得它看起来好像没有调用 EditImages
视图的重写函数。同时也是因为触发了错误的view
我有一个父视图和一个子视图。我想像这样覆盖子视图中的一个自定义函数:
我的网址:
path('<int:place_id>/add_images/', AddImages.as_view(), name="add-images"),
path('<int:place_id>/edit/images/', EditImages.as_view(), name="edit-images"),
# PARENT:
class AddImages(LoginRequiredMixin, View):
template_name = images/add_images.html
# HERE I GET THE CURRENT URL:
def next_url(self):
next_url = "?next={0}".format(self.request.path)
print("NEXT URL:" + str(next_url))
return next_url
# AND I USE IT HERE:
def post(self, request, **kwargs):
# ...
next_url = self.next_url()
data = {'next_url' : next_url }
return JsonResponse(data)
# CHILD:
class EditImages(AddImages):
"""
Inherits from ImagesView. overwrites template and next_url
"""
template_name = "images/edit_images.html"
def next_url(self):
next_url = "?next={0}".format(self.request.path)
print("CHILD URL2:" + str(next_url))
return next_url
我想覆盖父视图 next_url 并将其传递给 post()
当前输出仅打印:"NEXT URL: ..."
我该如何解决这个问题? 提前致谢
您的观点代码是正确的。
您的 edit_images.html
模板很可能 POST 到 AddImages
视图,这使得它看起来好像没有调用 EditImages
视图的重写函数。同时也是因为触发了错误的view