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