Django:表单视图中as_view()调用的第一个方法是什么

时间:2014-04-28 16:20:28

标签: python django django-forms django-views

我有一个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的简单方法

1 个答案:

答案 0 :(得分:0)

没关系,你不应该关心,视图中调用的第一个方法是什么。重点是将逻辑放在它所属的位置。在这种情况下,由于您关注的是获取实例,因此您应该覆盖get_object。在该方法中,您可以返回book对象,还可以将book和page对象存储为实例属性。