我有一个URL conf /book/(?P<book_id>\d+)/(?P<page_id>\d+)/edit/
,其中django.views.generic.edit.FormView
作为此端点的处理程序。
请求完成后,我必须检查Book
是否存在book_id
对象,并且Book
使用page_id
显示页码}}
哪里才是进行此处理的合适位置?我还希望将它们存储为实例属性,以便在需要时进行进一步处理。
修改
此外,这里棘手的部分是这里使用的form_class
完全取决于找到的对象!
目前在我们基于函数的视图中,装饰器用于完成工作的方法。在基于课堂的观点中,我不确定这样做的地方。
在典型的功能基础视图中
def get_object_or_404(view_function):
def decorator(request, book_id, page_id):
return view_function(request, book, page)
return decorator
@get_book_or_404
def edit_book(self, book, page):
# process the page
return HttpResponse()
我基本上是为基于类的视图找出相当于get_book_or_404
的简单方法
答案 0 :(得分:0)
没关系,你不应该关心,视图中调用的第一个方法是什么。重点是将逻辑放在它所属的位置。在这种情况下,由于您关注的是获取实例,因此您应该覆盖get_object
。在该方法中,您可以返回book
对象,还可以将book和page对象存储为实例属性。