📅  最后修改于: 2023-12-03 15:00:27.605000             🧑  作者: Mango
MVT 是 Django 框架中用于组织代码的一种架构模式,其中 MVT 代表 Model(模型)、View(视图)和 Template(模板)。
your_project/
├─ your_project/
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├─ your_app/
│ ├── migrations/
│ │ └── ...
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── models.py
│ ├── tests.py
│ ├── urls.py
│ └── views.py
└─ manage.py
your_project
: Django 项目的根目录。__init__.py
: 标明该目录是一个 Python 包。settings.py
: 配置文件,包含 Django 项目的常见设置。urls.py
: 定义 Django 项目中 URL 的路由映射。wsgi.py
: WSGI 接口,用于与 Web 服务器进行交互。your_app
: Django 应用的目录。migrations
: 用于存储数据库迁移脚本的目录。__init__.py
: 标明该目录是一个 Python 包。admin.py
: 管理后台相关配置。apps.py
: 应用的配置,包括应用名、中文名、版本号等。models.py
: 数据库模型。tests.py
: 单元测试相关代码。urls.py
: 应用的 URL 路由映射。views.py
: 视图函数代码。# models.py
from django.db import models
class Article(models.Model):
title = models.CharField('文章标题', max_length=100)
content = models.TextField('文章内容')
def __str__(self):
return self.title
定义了一个 Article
的模型,表示一篇文章。每个模型都是django.db.models.Model
的子类,模型中的每个字段都是django.db.models
模块中的一个字段类的实例。模型字段定义了数据库中的表结构,可以是数字、日期、字符串等多种数据类型。模型中的每一个属性代表着数据表中的一列,其属性值为模型的实例所代表的一行的值。
# views.py
from django.shortcuts import render
from django.http import HttpResponse
from .models import Article
def article_list(request):
articles = Article.objects.all()
return render(request, 'article_list.html', {'articles': articles})
def article_detail(request, pk):
article = Article.objects.get(pk=pk)
return render(request, 'article_detail.html', {'article': article})
views.py
中定义了如下两个处理函数:
article_list
: 获取所有文章列表,返回一个包含所有文章的 HttpResponse
实例。article_detail
: 根据传入的文章 ID 显示将一个文章的详细信息。<!-- article_list.html -->
{% for article in articles %}
<div class="article">
<h2><a href="{% url 'article_detail' article.pk %}">{{ article.title }}</a></h2>
<p>{{ article.content|truncatewords:30 }}</p>
</div>
{% endfor %}
article_list.html
是一个使用 Django 模板语言渲染的 HTML 文本,在该模板中使用了 for
循环将所有文章都渲染出来,其中链接指向的是单篇文章的详细页的链接。在之后的 URL 路由映射中,配置的 URL 的类似于这样:path('article/<int:pk>/', views.article_detail, name='article_detail')
。
MVT结构能够有效的组织代码和开发流程,使得代码复用,测试可靠和维护变得非常容易。在上述实现的过程中,可以保持清晰的思路和良好的代码风格,能够更好的实现Django项目。