发布于 2026-01-06 3 阅读
0

Django教程 - MVT架构,自定义命令

Django教程 - MVT架构,自定义命令

各位程序员朋友们,大家好!

本篇Django 教程介绍了一些实用主题,可以帮助初学者在Django中编写出比简单的“Hello World”程序更复杂的代码。对于新手来说,Django是最流行的基于 Python 的 Web 框架,最初发布于 2003 年,目前拥有超过 2000 名开源爱好者组成的庞大社区。“开箱即用”的设计理念和专家提供的内置安全模式,使Django成为 Web 开发领域的标杆框架。为了使本文更有价值,感兴趣的读者可以使用开源示例来实践这些概念。感谢阅读!

感谢阅读! - 内容由App Generator提供


  • ✨ Django 架构 - MVT 模式
  • ✨ 自定义命令 - 如何扩展默认的 Django CLI
  • 免费示例 - Django Soft 设计系统

开源 Django Starter - 软 UI 设计系统。


✨ Django 软件架构

本节解释了 Django MVT 架构以及它与长期存在的 MVC 架构有何不同。


介绍

Django 是一个基于 Python 的免费开源 Web 框架,遵循 MVT(模型-视图-模板)架构模式。该框架强调组件的可重用性和“可插拔性”,代码量少、耦合度低、开发速度快,并遵循“不要重复自己”的原则。Django 通篇使用 Python,甚至包括设置、文件和数据模型。此外,Django 还提供了一个可选的管理界面,用于创建、读取、更新和删除 (CRUD) 操作,该界面通过自省动态生成,并通过管理模型进行配置。


MVT架构——这种模式包含以下三个部分:

  • 模型:它将Model作为您的数据接口。它负责维护数据。它是整个应用程序背后的逻辑数据结构,并由数据库(通常是关系型数据库,例如 MySQL、PostgreSQL)表示。

  • 视图:指View您在浏览器中渲染网站时看到的用户界面。它由 HTML/CSS/Javascript 和 Jinja 文件构成。

  • 模板:ATemplate由所需的 HTML 输出的静态部分以及描述如何插入动态内容的一些特殊语法组成。

下面给出MVT动作流程的简化图:


Django - MVT 模式流程。


在此过程中,用户向 Django 请求资源。Django 作为控制器,检查 URL 中是否存在可用资源。如果 URL 匹配,则调用一个视图,该视图与模型和模板交互并渲染模板。Django 将响应模板发送给用户。

知名的 GeeksforGeeks 平台提供了一篇关于 MVT 和 MVC 模式的精彩对比文章 - 点击此处查看全文。


MVT 与 MVC - 由 GeeksforGeeks 提供。

图片来源- GeeksforGeeks


✨ 自定义命令

Django 提供了一系列命令行实用程序,可以通过命令行django-admin.py或便捷的manage.py脚本调用。它的优点之一是,你还可以添加自定义命令。


简介- 在正式开始之前,我们先花点时间熟悉一下 Django 的命令行界面。您可能已经熟悉诸如 `add` startprojectrunserver`add` 或 `add` 之类的命令collectstatic。要查看完整的命令列表,您可以运行以下命令:

$ python manage.py help
Enter fullscreen mode Exit fullscreen mode

优势——自定义命令的主要优势在于所有 Django 组件都已加载完毕,随时可用。这意味着您可以导入模型、使用 Django 的 ORM 执行数据库查询,并与项目的所有资源进行交互。


结构- 我们可以为自己的应用程序创建自定义命令,并通过在应用程序目录中创建 management/commands 目录,将它们添加到列表中,如下所示:

< PROJECT ROOT >                          <-- project directory
 |-- poll/                                <-- app directory
 |    |-- management/
 |    |    +-- __init__.py
 |    |    +-- commands/
 |    |         +-- __init__.py
 |    |         +-- my_custom_command.py  <-- module where command is going to live
 |    |-- migrations/
 |    |    +-- __init__.py
 |    |-- __init__.py
 |    |-- admin.py
 |    |-- apps.py
 |    |-- models.py
 |    |-- tests.py
 |    +-- views.py
 |-- core/
 |    |-- __init__.py
 |    |-- settings.py
 |    |-- urls.py
 |    |-- wsgi.py
 +-- manage.py
Enter fullscreen mode Exit fullscreen mode

命令文件名将用于通过命令行工具调用该命令。例如,如果我们的命令名为 my_custom_command.py,那么我们可以通过以下方式执行它:

$ python manage.py my_custom_command
Enter fullscreen mode Exit fullscreen mode

让我们编写一个可运行的示例代码——自定义命令应该如下所示:

management/commands/my_custom_command.py

from django.core.management.base import BaseCommand
from django.utils import timezone

class Command(BaseCommand):
    help = 'Displays current time'

    def handle(self, *args, **kwargs):
        time = timezone.now().strftime('%X')
        self.stdout.write("It's %s" % time)
Enter fullscreen mode Exit fullscreen mode

Django 管理命令由一个名为 `Management` 的类组成,Command该类继承自 `Management` BaseCommand。命令代码应在 `Management` 方法中定义handle()

该命令可按如下方式执行:

$ python manage.py my_custom_command
Enter fullscreen mode Exit fullscreen mode

输出:

It's 10:30:00
Enter fullscreen mode Exit fullscreen mode

Django Soft 设计系统

这个开源入门项目可以用来应用上述所有概念,源代码可以直接从 GitHub 下载——无需注册即可获取和使用代码。Django 代码库结构简洁直观,包含身份验证和部署脚本,所有这些都基于现代化的 Bootstrap 5 设计——Soft UI 设计系统



Soft UI 设计系统 - 由 AppSeed 提供的免费 Django 入门套件。


感谢阅读!更多资源请访问:


文章来源:https://dev.to/sm0ke/django-tutorial-mvt-architecture-custom-commands-19nb