django类基本视图中dispatch的用法是什么

时间:2017-09-30 09:09:10

标签: python django

Django ListView有一个方法dispatch()。根据Django documentation dispatch是接受请求参数和参数的方法,并返回HTTP响应。一直在寻找更多信息,但无法找到任何无法正确理解的信息。任何人都可以向我解释一下,以便更好地理解。

2 个答案:

答案 0 :(得分:3)

在django的基于类的视图中,您可以根据http请求动词名称在

中编写所有功能。
def get(self, *args, **kwargs):
    #processing to be done in case of GET request on that particular url

def post(self, *args, **kwargs):
    #processing to be done in case of POST request on that particular url

等等。

当请求到达时,调用dispatch方法并尝试搜索适当的方法来提供该请求,就像GET请求中定义的get方法一样,并且如果在该类中不存在这样的方法则调用http_method_not_allowed。

实际上,您通常不必覆盖此方法,除非您必须事先进行一些预处理,或者您希望将所有请求路由到您选择的方法,或者您希望手动控制此路由过程。

答案 1 :(得分:1)

为什么不查看代码?

http://ccbv.co.uk/projects/Django/1.11/django.views.generic.list/ListView/

您的urls.py条目将指向基于类的视图的as_view()方法。正如您将看到调用dispatch基本上尝试处理正确的方法取决于视图的配置方式 - 如果是ListView,通常是get()方法。