Django 中的视图 | Python

网友投稿 268 2022-08-26


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 响应from django.import HttpResponse# 获取日期时间import datetime# 创建一个函数def geeks_view(request): # 获取日期和时间 now = datetime.datetime.now() # 转换为字符串 html = "Time is {}".format(now) # 返回响应 return HttpResponse(html)

让我们一次一行地浏览这段代码:

首先,我们从 django.模块导入类HttpResponse以及 Python 的 datetime 库。接下来,我们定义一个名为 geeks_view 的函数。这是视图功能。每个视图函数都将一个 HttpRequest 对象作为其第一个参数,通常命名为 request。该视图返回一个 HttpResponse 对象,其中包含生成的响应。每个视图函数负责返回一个HttpResponse对象。

有关 HttpRequest 和 HttpResponse 的更多信息,请访问 - Django 请求和响应周期 - HttpRequest 和 HttpResponse 对象让我们在 geeks/urls.py 中让这个视图正常工作,

from django.urls import path# importing views from views..pyfrom .views import geeks_viewurlpatterns = [ path('', geeks_view),]

现在,访问​​,

要查看如何使用 Django 的 MVT(模型、视图、模板)结构制作基本项目,请访问创建 Django 项目。

视图类型

Django 视图分为两大类:-

基于函数的视图基于类的视图

基于函数的视图

基于函数的视图是使用 python 中的函数的编写器,该函数接收作为参数 HttpRequest 对象并返回一个 HttpResponse 对象。基于函数的视图一般分为4种基本策略,即CRUD(创建、检索、更新、删除)。CRUD 是任何用于开发的框架的基础。

基于函数的视图示例 –

让我们创建一个基于函数的视图列表视图来显示模型的实例。让我们创建一个模型,我们将通过我们的视图创建它的实例。在 geeks/models.py 中,

创建此模型后,我们需要运行两个命令才能为其创建数据库。

Python manage.py makemigrationsPython manage.py migrate

现在让我们使用 shell 创建这个模型的一些实例,运行表单 bash,

Python manage.py shell

输入以下命令

>>> from geeks.models import GeeksModel>>> GeeksModel.objects.create( title="title1", description="description1").save()>>> GeeksModel.objects.create( title="title2", description="description2").save()>>> GeeksModel.objects.create( title="title2", description="description2").save()

现在,如果您想在管理面板中查看您的模型及其数据,那么您需要注册您的模型。让我们注册这个模型。在 geeks/admin.py 中,

from django.contrib import adminfrom .models import GeeksModel# Register your models here.admin.site.register(GeeksModel)

现在我们已经为后端准备好了一切。验证是否已从​​创建实例

让我们为其创建一个视图和模板。在 geeks/views.py 中,

from django.shortcuts import render# 表格的相对导入from .models import GeeksModeldef list_view(request): # 以字段名称为键的初始数据字典 context ={} # 在初始化期间添加字典 context["dataset"] = GeeksModel.objects.all() return render(request, "list_view.html", context)

在 templates/list_view.html 中创建模板,

{% for data in dataset %}. {{ data.title }}
{{ data.description }}

{% endfor %}

让我们检查一下​​上有什么

类似地,基于函数的视图可以用创建、更新、检索和删除视图的逻辑来实现。

基于类的视图

基于类的视图提供了另一种将视图实现为 Python 对象而不是函数的方法。它们不会取代基于函数的视图,但与基于函数的视图相比,它们具有一定的区别和优势:

与特定 HTTP 方法(GET、POST 等)相关的代码组织可以通过单独的方法而不是条件分支来解决。诸如混合(多重继承)之类的面向对象技术可用于将代码分解为可重用的组件。

基于类的视图比基于函数的视图更易于管理且更高效。具有大量代码行的基于函数的视图可以转换为仅具有几行代码的基于类的视图。这就是面向对象编程产生影响的地方。

基于类的视图示例 –

在 geeks/views.py 中,

from django.views.generic.list import ListViewfrom .models import GeeksModelclass GeeksList(ListView): # 指定列表视图的模型 model = GeeksModel

现在创建一个 URL 路径来映射视图。在 geeks/urls.py 中,

from django.urls import path# importing views from views..pyfrom .views import GeeksListurlpatterns = [ path('', GeeksList.as_view()),]

在templates/geeks/geeksmodel_list.html中创建一个模板,

    {% for object in object_list %}
  • {{ object.title }}
  • {{ object.description }}

  • {% empty %}
  • No objects yet.
  • {% endfor %}

让我们检查一下​​上有什么


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:string类和LocalDateTime的相互转换方式
下一篇:创建视图——基于函数的视图 Django(在视图上创建视图)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~