Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么是基于函数的视图和基于类的视图?_Python_Django - Fatal编程技术网

Python 为什么是基于函数的视图和基于类的视图?

Python 为什么是基于函数的视图和基于类的视图?,python,django,Python,Django,我是django web开发的初学者,我想知道为什么视图需要用函数和类来呈现?url模块不能直接链接url到HTML模板,而不是通过基于函数的视图间接链接到HTML模板吗?您确实可以让url模块以正确的方式呈现HTML。为此,您可以使用direct\u to\u模板: 如果在向用户发送响应(“呈现模板”)之前需要进行任何额外的处理,则需要依赖函数。例如,您可能需要记录用户的IP地址,或者从数据库加载数据以填充模板。或者您甚至不必呈现HTML,而是JSON。这就是为什么您需要一个自定义视图,它可以

我是django web开发的初学者,我想知道为什么视图需要用函数和类来呈现?url模块不能直接链接url到HTML模板,而不是通过基于函数的视图间接链接到HTML模板吗?

您确实可以让url模块以正确的方式呈现HTML。为此,您可以使用
direct\u to\u模板


如果在向用户发送响应(“呈现模板”)之前需要进行任何额外的处理,则需要依赖函数。例如,您可能需要记录用户的IP地址,或者从数据库加载数据以填充模板。或者您甚至不必呈现HTML,而是JSON。这就是为什么您需要一个自定义视图,它可以在函数或类中实现。

因此,Django的要点是,您希望提供的不仅仅是静态HTML,您可能希望以某种方式处理它。正如其他答案所说,如果您只想返回HTML,可以使用TemplateView()或让web服务器处理静态文件()


除非您的用例是一个单页应用程序,否则您很可能会有一些多页通用的HTML,在这种情况下,您可以包括和扩展模板。

否,您需要调用视图以便对将呈现的数据进行一些处理或过滤。视图负责处理在后台发生的事情,例如处理表单或数据库模型,您不能通过仅呈现html模板来实现这一点。大多数视图不只是呈现模板,大多数视图进行查询、处理数据、呈现数据和更新数据。事实上,大多数POST请求根本不会呈现模板。如果你只想创建一个包含静态文件的网站,你不需要像Django这样的web框架,那么你可以创建一组HTML页面,并使用apache之类的工具将其提供给浏览器。