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


目录
相关文章
|
1月前
|
JSON 数据可视化 API
Python 中调用 DeepSeek-R1 API的方法介绍,图文教程
本教程详细介绍了如何使用 Python 调用 DeepSeek 的 R1 大模型 API,适合编程新手。首先登录 DeepSeek 控制台获取 API Key,安装 Python 和 requests 库后,编写基础调用代码并运行。文末包含常见问题解答和更简单的可视化调用方法,建议收藏备用。 原文链接:[如何使用 Python 调用 DeepSeek-R1 API?](https://apifox.com/apiskills/how-to-call-the-deepseek-r1-api-using-python/)
|
19天前
|
索引 Python
python字符串类型及操作
本文主要讲解字符串类型的表示、操作符、处理函数、处理方法及格式化。内容涵盖字符串的定义、表示方法(单双引号、三引号)、索引与切片、特殊字符转义、常见操作符(如+、*、in等)、处理函数(如len()、str()、chr()等)、处理方法(如.lower()、.split()等)以及格式化方式(如.format())。通过实例代码详细介绍了字符串的各种用法和技巧,帮助读者全面掌握字符串操作。
python字符串类型及操作
|
5天前
|
机器学习/深度学习 数据采集 数据可视化
Python/Anaconda双方案加持!Jupyter Notebook全平台下载教程来袭
Jupyter Notebook 是一款交互式编程与数据科学分析工具,支持40多种编程语言,广泛应用于机器学习、数据清洗和学术研究。其核心优势包括实时执行代码片段、支持Markdown文档与LaTeX公式混排,并可导出HTML/PDF/幻灯片等格式。本文详细介绍了Jupyter Notebook的软件定位、特性、安装方案(Anaconda集成环境与原生Python+PIP安装)、首次运行配置及常见问题解决方案,帮助用户快速上手并高效使用该工具。
|
10天前
|
SQL 关系型数据库 MySQL
milvus-use教程 python
本项目参考vanna项目,获取数据库元数据和问题SQL对,存入Milvus向量数据库,并进行相似性检索。采用m3e-large嵌入模型,通过DatabaseManager类实现数据库连接持久化,MilvusVectorStore类封装了Milvus操作方法,如创建集合、添加数据和查询。项目提供init_collections、delete_collections等文件用于初始化、删除和管理集合。所用Milvus版本较新,API与vanna项目不兼容。 [项目地址](https://gitee.com/alpbeta/milvus-use)
88 9
|
17天前
|
大数据 开发者 C++
Python语法糖详解教程
《Python语法糖详解教程》介绍了编程语言中的“语法糖”,即通过特殊语法形式简化代码,使代码更简洁、易读和高效。文章详细解析了列表推导式、字典推导式、元组解包、条件表达式、with语句和装饰器等核心语法糖,并提供了具体示例和最佳实践指南。通过这些技巧,开发者可以在保持底层功能不变的前提下,显著提升开发效率和代码质量。
39 8
|
2月前
|
IDE 测试技术 项目管理
【新手必看】PyCharm2025 免费下载安装配置教程+Python环境搭建、图文并茂全副武装学起来才嗖嗖的快,绝对最详细!
PyCharm是由JetBrains开发的Python集成开发环境(IDE),专为Python开发者设计,支持Web开发、调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试和版本控制等功能。它有专业版、教育版和社区版三个版本,其中社区版免费且适合个人和小型团队使用,包含基本的Python开发功能。安装PyCharm前需先安装Python解释器,并配置环境变量。通过简单的步骤即可在PyCharm中创建并运行Python项目,如输出“Hello World”。
439 13
【新手必看】PyCharm2025 免费下载安装配置教程+Python环境搭建、图文并茂全副武装学起来才嗖嗖的快,绝对最详细!
|
19天前
|
C语言 Python
Python学习:内建属性、内建函数的教程
本文介绍了Python中的内建属性和内建函数。内建属性包括`__init__`、`__new__`、`__class__`等,通过`dir()`函数可以查看类的所有内建属性。内建函数如`range`、`map`、`filter`、`reduce`和`sorted`等,分别用于生成序列、映射操作、过滤操作、累积计算和排序。其中,`reduce`在Python 3中需从`functools`模块导入。示例代码展示了这些特性和函数的具体用法及注意事项。
|
3月前
|
数据可视化 DataX Python
Seaborn 教程-绘图函数
Seaborn 教程-绘图函数
105 8
|
3月前
Seaborn 教程-主题(Theme)
Seaborn 教程-主题(Theme)
172 7
|
3月前
|
Python
Seaborn 教程-模板(Context)
Seaborn 教程-模板(Context)
61 4

热门文章

最新文章