Django 中的视图 | Python
Django Views 是 M V T Structure of Django 的重要参与者之一。根据 Django 文档,视图函数是接受 Web 请求并返回 Web 响应的 Python 函数。此响应可以是网页的 HTML 内容、重定向、404 错误、XML 文档或图像,以及 Web 浏览器可以显示的任何内容。
Django 视图是用户界面的一部分——它们通常将模板文件中的 HTML/CSS/Javascript 渲染成您在渲染网页时在浏览器中看到的内容。(请注意,如果您使用过其他基于 MVC (Model-View-Controller)的框架,请不要混淆 Django 视图和 MVC 范例中的视图。Django 视图大致对应于 MVC 中的控制器,而 Django 模板对应于视图在 MVC 中。)
Django 查看示例
如何使用示例创建和使用 Django 视图的说明。考虑一个名为 geeksforgeeks 的项目,它有一个名为 geeks 的应用程序。
准备好项目后,我们可以在 geeks/views.py 中创建一个视图,
让我们一次一行地浏览这段代码:
首先,我们从 django.http 模块导入类 HttpResponse 以及 Python 的 datetime 库。
接下来,我们定义一个名为 geeks_view 的函数。这是视图功能。每个视图函数都将一个 HttpRequest 对象作为其第一个参数,通常命名为 request。
该视图返回一个 HttpResponse 对象,其中包含生成的响应。每个视图函数负责返回一个 HttpResponse 对象。
有关 HttpRequest 和 HttpResponse 的更多信息,请访问 - Django 请求和响应周期 - HttpRequest 和 HttpResponse 对象让我们在 geeks/urls.py 中让这个视图正常工作,
现在,访问http://127.0.0.1:8000/,
要查看如何使用 Django 的 MVT(模型、视图、模板)结构制作基本项目,请访问如何在 Django 中使用 MVT 创建基本项目?。
视图类型
Django 视图分为两大类:-
基于函数的视图
基于类的视图
基于函数的视图
基于函数的视图是使用 python 中的函数的编写器,该函数接收作为参数 HttpRequest 对象并返回一个 HttpResponse 对象。基于函数的视图一般分为 4 种基本策略,即 CRUD(创建、检索、更新、删除)。CRUD 是任何用于开发的框架的基础。
基于函数的视图示例 –
让我们创建一个基于函数的视图列表视图来显示模型的实例。让我们创建一个模型,我们将通过我们的视图创建它的实例。在 geeks/models.py 中,
创建此模型后,我们需要运行两个命令才能为其创建数据库。
现在让我们使用 shell 创建这个模型的一些实例,运行表单 bash,
输入以下命令
现在,如果您想在管理面板中查看您的模型及其数据,那么您需要注册您的模型。让我们注册这个模型。在 geeks/admin.py 中,
现在我们已经为后端准备好了一切。验证是否已从http://localhost:8000/admin/geeks/geeksmodel/ 创建实例
让我们为其创建一个视图和模板。在 geeks/views.py 中,
在 templates/list_view.html 中创建模板,
让我们检查一下http://localhost:8000/上有什么
类似地,基于函数的视图可以用创建、更新、检索和删除视图的逻辑来实现。
基于类的视图
基于类的视图提供了另一种将视图实现为 Python 对象而不是函数的方法。它们不会取代基于函数的视图,但与基于函数的视图相比,它们具有一定的区别和优势:
与特定 HTTP 方法(GET、POST 等)相关的代码组织可以通过单独的方法而不是条件分支来解决。
诸如混合(多重继承)之类的面向对象技术可用于将代码分解为可重用的组件。
基于类的视图比基于函数的视图更易于管理且更高效。具有大量代码行的基于函数的视图可以转换为仅具有几行代码的基于类的视图。这就是面向对象编程产生影响的地方。
基于类的视图示例 –
在 geeks/views.py 中,
现在创建一个 URL 路径来映射视图。在 geeks/urls.py 中,
在 templates/geeks/geeksmodel_list.html 中创建一个模板,
让我们检查一下http://localhost:8000/ 上有什么
版权声明: 本文为 InfoQ 作者【海拥(haiyong.site)】的原创文章。
原文链接:【http://xie.infoq.cn/article/51e615baf2ad113930841ac38】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论