基于类的视图的工作流程

来源:互联网 发布:c语言中的专门术语 编辑:程序博客网 时间:2024/06/07 08:08

最简单的实现一个视图的方法是采用函数的形式,这个函数以request作为第一个参数,其他的参数从urlconf中得到。然后必须返回一个response。

高级一点的当然是基于类的视图了,基于类的视图的好处官方文档上面噼里啪啦说了一大堆。我在看文档的时候一直想知道基于类的视图的运行过程,但是由于刚开始浏览的时候没注意扫过去了。原来就夹在那噼里啪啦一大堆的最下面。


大致翻译如下:django的url解析器只能解析函数,所以必须把视图类的成员函数传递进去。这个函数就是as_view。我查了一下View的方法和属性。列出如下:
as_view
dispatch
http_method_names
options
as_view是视图类的一个入口,这个函数会创建一个视图类的实例对象,然后调用dispatch方法,这个dispatch方法会根据request的类型去决定调用get方法还是post方法。前提是你自定义了这些方法。或者你是在使用一些已经定义了这种函数的视图类。
那我又有疑问了,我们都知道作为一个视图你必须要返回一个response才行啊。那么哪个函数应该承担起这个责任呢。如果调用我自己写的get,那么我可以自己去return。那如果是django提供的视图类,比如说DetailView,UpdateView呢?