Python 教程之 Django(6)视图类型

简介: Python 教程之 Django(6)视图类型

视图类型


Django观点分为两大类:

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


基于函数的视图


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


基于函数的视图示例 –

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

# 从内置库导入标准Django模型
from django.db import models
# 声明一个名为“GeeksModel”的新模型
class GeeksModel(models.Model):
  # 模型的字段
  title = models.CharField(max_length = 200)
  description = models.TextField()
  # 用标题名称重命名模型实例
  def __str__(self):
    return self.title

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

Python manage.py makemigrations
Python 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()

现在,如果您想在管理面板中查看模型及其数据,则需要注册模型。

让我们注册此模型。在极客/管理员.py,

from django.contrib import admin
from .models import GeeksModel
# 在此处注册您的型号。
admin.site.register(GeeksModel)

现在,我们已经为后端做好了一切准备。验证是否已从 http://localhost:8000/admin/geeks/geeksmodel/ 创建实例

image.png

让我们为它创建一个视图和模板。在极客/视图.py,

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

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

<div class="main">
  {% for data in dataset %}.
  {{ data.title }}<br/>
  {{ data.description }}<br/>
  <hr/>
  {% endfor %}
</div>

让我们检查一下 http://localhost:8000/

image.png


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


基于类的视图


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

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

与基于函数的视图相比,基于类的视图更易于管理且更高效。具有大量代码行的基于函数的视图可以转换为仅包含几行的基于类的视图。这就是面向对象编程发挥作用的地方。


基于类的视图示例 –

在极客/视图.py,

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

现在创建一个 URL 路径来映射视图。在极客/网址.py,

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

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

<ul>
  <!-- Iterate over object_list -->
  {% for object in object_list %}
  <!-- Display Objects -->
  <li>{{ object.title }}</li>
  <li>{{ object.description }}</li>
  <hr/>
  <!-- If objet_list is empty -->
  {% empty %}
  <li>No objects yet.</li>
  {% endfor %}
</ul>

最后让我们检查一下http://localhost:8000/

image.png


目录
相关文章
|
3天前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
Python Web框架比较:Django vs Flask vs Pyramid
12 1
|
1天前
|
Python
SciPy 教程 之 SciPy 模块列表 16
SciPy教程之SciPy模块列表16 - 单位类型。常量模块包含多种单位,如公制、质量、角度、时间、长度、压强、体积、速度、温度、能量、功率和力学单位。示例代码展示了力学单位的使用,如牛顿、磅力和千克力等。
4 0
|
2天前
|
JavaScript Python
SciPy 教程 之 SciPy 模块列表 15
SciPy 教程之 SciPy 模块列表 15 - 功率单位。常量模块包含多种单位,如公制、质量、时间等。功率单位中,1 瓦特定义为 1 焦耳/秒,表示每秒转换或耗散的能量速率。示例代码展示了如何使用 `constants` 模块获取马力值(745.6998715822701)。
6 0
|
2天前
|
JavaScript Python
SciPy 教程 之 SciPy 模块列表 15
SciPy教程之SciPy模块列表15:单位类型。常量模块包含多种单位,如公制、质量、角度、时间、长度、压强、体积、速度、温度、能量、功率和力学单位。功率单位以瓦特(W)表示,1W=1J/s。示例代码展示了如何使用`constants`模块获取马力(hp)的值,结果为745.6998715822701。
7 0
|
3天前
|
Python
SciPy 教程 之 SciPy 模块列表 13
SciPy 教程之 SciPy 模块列表 13 - 单位类型。常量模块包含多种单位:公制、二进制(字节)、质量、角度、时间、长度、压强、体积、速度、温度、能量、功率和力学单位。示例:`constants.zero_Celsius` 返回 273.15 开尔文,`constants.degree_Fahrenheit` 返回 0.5555555555555556。
6 0
|
6月前
|
开发框架 开发者 Python
深入探究Python Web开发框架:Flask与Django
Python作为一种广泛应用于Web开发的编程语言,其拥有众多优秀的Web开发框架。本文将深入探讨其中两大知名框架——Flask与Django。通过对它们的概念与实践进行比较分析,帮助读者更好地理解和选择适合自己项目需求的Web开发框架。
|
6月前
|
开发框架 前端开发 JavaScript
Python 有哪些Web框架?比如Flask、Django等知识梳理
Python 有哪些Web框架?比如Flask、Django等知识梳理
340 1
|
6月前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
【4月更文挑战第9天】本文对比了Python三大Web框架Django、Flask和Pyramid。Django功能全面,适合快速开发,但学习曲线较陡;Flask轻量灵活,易于入门,但默认配置简单,需自行添加功能;Pyramid兼顾灵活性和可扩展性,适合不同规模项目,但社区及资源相对较少。选择框架应考虑项目需求和开发者偏好。
259 0
|
14天前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
Python Web框架比较:Django vs Flask vs Pyramid
16 4
|
15天前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
【10月更文挑战第10天】本文比较了Python中三个最受欢迎的Web框架:Django、Flask和Pyramid。Django以功能全面、文档完善著称,适合快速开发;Flask轻量灵活,易于上手;Pyramid介于两者之间,兼顾灵活性和安全性。选择框架时需考虑项目需求和个人偏好。
25 1