我们知道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()
的地方?
答案 0 :(得分:1)
在请求/响应周期中调用视图时, HttpRequest被分配给视图的request属性。任何 从网址格式捕获的位置和/或关键字参数是 分别分配给args和kwargs属性。 然后
dispatch()
被调用。
这意味着,只要找到匹配模式,URLDispatecher
就会将HttpRequest发送到相应的视图,因此视图会调用其dispatch()
方法