基于类的视图如何知道它们需要调用调度方法

时间:2018-07-07 01:24:00

标签: python django django-views django-class-based-views django-generic-views

我们知道dispatch是当我们的网址到达CBV(Class Based Views)时调用的第一个方法。我们还知道,要调用这些视图,必须调用as_view(CBV中的urls.py才能使它们可调用。

views.py如下所示

class ProductListView(ListView):
    template_name = "products/list.html"
    model = Question #Question is a model that is defined in models.py

urls.py如下所示

urlpatterns = [
    url(r'^$',ProductListhView.as_view(),name='list'),
]

现在我的问题是

CBV(ProductListView)如何知道必须调用dispatch()方法,因为我们仅继承了通用视图类,却没有提到要调用dispatch()的地方?

1 个答案:

答案 0 :(得分:1)

Django Official Doc

  

在请求/响应周期中调用视图时,   HttpRequest被分配给视图的request属性。任何   从网址格式捕获的位置和/或关键字参数是   分别分配给args和kwargs属性。 然后   dispatch()被调用。

这意味着,只要找到匹配模式,URLDispatecher就会将HttpRequest发送到相应的视图,因此视图会调用其dispatch()方法