掌握 Django MTV 模式:模型、视图、模板和表单完全指南
如果您正在考虑开始网络开发,尤其是使用 Django! 您听说过 MTV 这个词吗? 起初,我以为它代表 "音乐电视"(变态......),但后来我意识到,"音乐电视 "的意思是 "音乐电视"。 DjangoMTV 的含义完全不同。
今天我们将使用 Django MTV 模式我们将对此进行深入研究。 模型、模板、视图...和 表格就是这样!跟随代码示例深入了解 Django 的核心,本文结束时,你将成为 Django MTV 专家!
什么是 Django MTV 模式?

Django MTV 模式是模型-模板-视图(Model-Template-View)的缩写,是一种系统地分解网络应用程序结构的方法。 它类似于其他框架中的模型-视图-控制器(MVC)模式,但具有 Django 的特色。
- 模型: 处理数据库的部分
- 模板:用户看到的用户界面部分
- 视图:处理业务逻辑的部分
MTV(模型-模板-视图)和 MVC(模型-视图-控制器)模式的主要 差异
Django 中的 MTV 模式
- 模型:负责数据结构和数据库交互
- 模板:用户界面渲染(类似于视图)
- 视图:业务逻辑处理(类似于控制器)
经典 MVC 模式
- 模型:数据和业务逻辑
- 视图:用户看到的用户界面
- 控制器:处理用户输入,在模型和视图之间进行调解
主要区别
- Django 的视图在 MVC 中充当控制器
- Django 的模板在 MVC 中充当视图
- 基本概念几乎相同,只是术语有所不同
实际上,这两种模式的目的是一样的:分离数据、逻辑和表示。
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代码评注
从 django.db 导入模型导入 Django 的模型功能。类 BlogPost(models.Model):博客帖子创建一个名为title = models.CharField(max_length=200)创建字符串字段,最多 200 个字符。content = models.TextField()创建一个字段,用于存储长文本。pub_date = models.DateTimeField('date published')创建一个字段来存储日期和时间。def __str__(self):定义将此模型中的对象表示为字符串时使用的方法。
这将在数据库中创建一个 "BlogPost "表、 Django ORM便于数据操作。* Django 对象关系映射(ORM)是一种自动处理 Python 对象与关系数据库表之间转换的技术。它的主要功能包括:将数据库查询转换为 Python 方法,允许在不直接编写 SQL 查询的情况下进行数据操作,支持独立于数据库的代码编写,以及允许通过模型类定义数据库模式。
Django 模板:展示魔法

模板是 Django 的一项特殊功能,它允许您在 HTML 文件中加入 Python 变量。 让我们创建一个模板,显示博客文章列表。
<h1>我的博客</h1>
<ul>
{%,代表职位中的职位 %}
<li>
<h2>{{ post.title }}</h2>
<p>{{ post.pub_date|date: "Y-m-d" }}</p>
</li>
{%结束%} {%}
</ul>代码评注
<h1>我的博客</h1>:显示页面标题。{%,代表职位中的职位 %}:遍历 "帖子 "列表中的每个项目,类似于 Python 中的 for 循环。{{ post.title }}打印 "post "对象的 "title "属性值。{{ post.pub_date|date: "Y-m-d" }}:"pub_date",格式为 "Y-m-d"。{%结束%} {%}表示 for 循环的结束。
这样,您就可以动态生成博文列表。
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})代码评注
从 django.shortcuts 导入 render获取 Django 的渲染函数。从 .models 导入 BlogPost:导入我们创建的 BlogPost 模型。def post_list(request):定义一个名为 "post_list "的视图函数。posts = BlogPost.objects.order_by('-pub_date')[:5]获取最新的五个帖子。return render(request, 'blog/post_list.html', {'posts': posts}):将数据(帖子)传递给模板(post_list.html)并渲染。
该视图获取最近五篇博文的列表,并将其传递给模板。
Django 表单:输入向导

表单是 Django 的一项强大功能,可轻松处理用户输入。 让我们创建一个表单来创建博文。
从 django 导入表单
从 .models 导入 BlogPost
类 BlogPostForm(forms.ModelForm):
类
模型 = BlogPost
字段 = ['title', 'content']代码评注
从 django 导入表单导入 Django 的表单功能。从 .models 导入 BlogPost:导入我们的 BlogPost 模型。类 BlogPostForm(forms.ModelForm):创建一个继承自 ModelForm 的新表单类。类元:定义该表格的元数据。模型 = BlogPost指定此表单基于 BlogPost 模型。fields = ['title', 'content'] 字段指定要包含在表单中的字段。
您可以在视图中轻松使用该表格。
清理 Django MTV
因此,我们已经看到了 Django MTV 模式的每个元素:用模型定义数据、用模板展示数据、用视图处理逻辑、用表单接收输入,所有这些元素有机地连接在一起,创建了一个漂亮的网络应用程序。
Django MTV 模式初看起来可能很复杂,但一旦理解了它,就会发现它确实是一个强大而高效的工具。既然您已经了解了 Django MTV 的基础知识,为什么不创建一个自己的项目呢? 通过实际编写和运行代码,您将获得更深入的理解。
创建 Python Django 网站:新手指南 查看文章回顾,了解如何建立一个真正的网站 恭喜您,您已经开始使用 Django 进行网站开发了!





