【问题标题】:how class based views know that they need to call dispatch method基于类的视图如何知道它们需要调用调度方法
【发布时间】:2018-12-15 13:59:34
【问题描述】:

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

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()

【问题讨论】:

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


    【解决方案1】:

    来自Django Official Doc

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-13
      • 2022-11-20
      • 1970-01-01
      • 2018-08-21
      • 1970-01-01
      • 2015-03-05
      • 1970-01-01
      • 2015-03-25
      相关资源
      最近更新 更多