掌握 Django MTV 模式:模型、视图、模板和表单完全指南

如果您正在考虑开始网络开发,尤其是使用 Django! 您听说过 MTV 这个词吗? 起初,我以为它代表 "音乐电视"(变态......),但后来我意识到,"音乐电视 "的意思是 "音乐电视"。 DjangoMTV 的含义完全不同。

今天我们将使用 Django MTV 模式我们将对此进行深入研究。 模型、模板、视图...和 表格就是这样!跟随代码示例深入了解 Django 的核心,本文结束时,你将成为 Django MTV 专家!

什么是 Django MTV 模式?

Django MTV 패턴 이해도
(了解 Django MTV 模式 )

Django MTV 模式是模型-模板-视图(Model-Template-View)的缩写,是一种系统地分解网络应用程序结构的方法。 它类似于其他框架中的模型-视图-控制器(MVC)模式,但具有 Django 的特色。

  • 模型: 处理数据库的部分
  • 模板:用户看到的用户界面部分
  • 视图:处理业务逻辑的部分

MTV(模型-模板-视图)和 MVC(模型-视图-控制器)模式的主要 差异

Django 中的 MTV 模式

  • 模型:负责数据结构和数据库交互
  • 模板:用户界面渲染(类似于视图)
  • 视图:业务逻辑处理(类似于控制器)

经典 MVC 模式

  • 模型:数据和业务逻辑
  • 视图:用户看到的用户界面
  • 控制器:处理用户输入,在模型和视图之间进行调解

主要区别

  • Django 的视图在 MVC 中充当控制器
  • Django 的模板在 MVC 中充当视图
  • 基本概念几乎相同,只是术语有所不同

实际上,这两种模式的目的是一样的:分离数据、逻辑和表示。

Django 模型:数据的基础

Django Models 구조화 이미지
(Django 模型结构示例)

Django 模型使用 数据库表格例如,假设您正在创建一篇博文。
* 数据库表格是数据库的基本结构,它以行和列的结构存储信息。例如,下面代码中的 BlogPost 模型被转换成一个名为 "blog_post "的表,其中每一行存储一篇博客文章,每一列存储标题、内容和发布日期。

从 django.db 导入模型

类 BlogPost(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    pub_date = models.DateTimeField('date published')

    def __str__(self):
        return self.title

代码评注

  1. 从 django.db 导入模型导入 Django 的模型功能。
  2. 类 BlogPost(models.Model): 博客帖子创建一个名为
  3. title = models.CharField(max_length=200)创建字符串字段,最多 200 个字符。
  4. content = models.TextField()创建一个字段,用于存储长文本。
  5. pub_date = models.DateTimeField('date published')创建一个字段来存储日期和时间。
  6. def __str__(self):定义将此模型中的对象表示为字符串时使用的方法。

这将在数据库中创建一个 "BlogPost "表、 Django ORM便于数据操作。
* Django 对象关系映射(ORM)是一种自动处理 Python 对象与关系数据库表之间转换的技术。它的主要功能包括:将数据库查询转换为 Python 方法,允许在不直接编写 SQL 查询的情况下进行数据操作,支持独立于数据库的代码编写,以及允许通过模型类定义数据库模式。

Django 模板:展示魔法

Django Templates 렌더링 프로세스 이미지

模板是 Django 的一项特殊功能,它允许您在 HTML 文件中加入 Python 变量。 让我们创建一个模板,显示博客文章列表。

<h1>我的博客</h1>
<ul>
{%,代表职位中的职位 %}
    <li>
        <h2>{{ post.title }}</h2>
        <p>{{ post.pub_date|date: "Y-m-d" }}</p>
    </li>
{%结束%} {%}
</ul>

代码评注

  1. <h1>我的博客</h1>:显示页面标题。
  2. {%,代表职位中的职位 %}:遍历 "帖子 "列表中的每个项目,类似于 Python 中的 for 循环。
  3. {{ post.title }}打印 "post "对象的 "title "属性值。
  4. {{ post.pub_date|date: "Y-m-d" }}:"pub_date",格式为 "Y-m-d"。
  5. {%结束%} {%}表示 for 循环的结束。

这样,您就可以动态生成博文列表。

Django 视图:逻辑的核心

Django Views 프로세스 흐름도
(Django 视图流程)

视图是从模型获取数据并将其传递给模板的中间人。 让我们创建一个视图来显示博客文章列表。

from django.shortcuts import render
从 .models import BlogPost

def post_list(request):
    posts = BlogPost.objects.order_by('-pub_date')[:5]
    return render(request, 'blog/post_list.html', {'posts': posts})

代码评注

  1. 从 django.shortcuts 导入 render获取 Django 的渲染函数。
  2. 从 .models 导入 BlogPost:导入我们创建的 BlogPost 模型。
  3. def post_list(request):定义一个名为 "post_list "的视图函数。
  4. posts = BlogPost.objects.order_by('-pub_date')[:5]获取最新的五个帖子。
  5. return render(request, 'blog/post_list.html', {'posts': posts}):将数据(帖子)传递给模板(post_list.html)并渲染。

该视图获取最近五篇博文的列表,并将其传递给模板。

Django 表单:输入向导

Django Forms 라이프사이클 이미지
( Django 表单生命周期 )

表单是 Django 的一项强大功能,可轻松处理用户输入。 让我们创建一个表单来创建博文。

从 django 导入表单
从 .models 导入 BlogPost

类 BlogPostForm(forms.ModelForm):
    类
        模型 = BlogPost
        字段 = ['title', 'content']

代码评注

  1. 从 django 导入表单导入 Django 的表单功能。
  2. 从 .models 导入 BlogPost:导入我们的 BlogPost 模型。
  3. 类 BlogPostForm(forms.ModelForm):创建一个继承自 ModelForm 的新表单类。
  4. 类元:定义该表格的元数据。
  5. 模型 = BlogPost指定此表单基于 BlogPost 模型。
  6. fields = ['title', 'content'] 字段指定要包含在表单中的字段。

您可以在视图中轻松使用该表格。

清理 Django MTV

因此,我们已经看到了 Django MTV 模式的每个元素:用模型定义数据、用模板展示数据、用视图处理逻辑、用表单接收输入,所有这些元素有机地连接在一起,创建了一个漂亮的网络应用程序。

Django MTV 模式初看起来可能很复杂,但一旦理解了它,就会发现它确实是一个强大而高效的工具。既然您已经了解了 Django MTV 的基础知识,为什么不创建一个自己的项目呢? 通过实际编写和运行代码,您将获得更深入的理解。

创建 Python Django 网站:新手指南 查看文章回顾,了解如何建立一个真正的网站 恭喜您,您已经开始使用 Django 进行网站开发了!

类似文章