Django的MTV架构指的是模型(Model)、模板(Template)、视图(View)这三个组件,它们共同构成了Django应用的基本结构。这种架构方式类似于MVC(模型-视图-控制器),但是Django将其稍作调整以更适合Web应用的开发。
MTV组件详解:
模型(Model):
- 模型是Django中用来定义数据结构的方法,通常在
models.py
文件中编写。 - 模型基于Python类,继承自
django.db.models.Model
,每个模型类都对应数据库中的一个表。 - 模型的属性定义了表中的字段,Django使用这些字段来创建数据库的列。
- 模型是Django中用来定义数据结构的方法,通常在
模板(Template):
- 模板是Django用来生成HTML页面的文本文件,它们包含了HTML标记和一些模板标签。
- 模板可以动态地插入数据,这些数据由视图提供。
- 模板系统允许开发者定义页面的布局和展示逻辑,而具体的数据处理则由视图来完成。
视图(View):
- 视图是Django中处理业务逻辑的函数或类,它们接收输入(通常是HTTP请求),并返回输出(通常是HTTP响应)。
- 视图负责调用模型来获取或更新数据,然后选择一个模板来渲染响应的HTML内容。
怎么理解MTV:
- 分离关注点:MTV架构将数据管理、用户界面和业务逻辑分开,使得每种组件只关注其特定的任务。
- 重用性:由于组件之间的分离,模型和模板可以在不同的视图中重复使用。
- 可维护性:清晰的架构使得应用更易于维护和扩展。
代码示例:
模型(Model)示例:
# models.py from django.db import models class Book(models.Model): title = models.CharField(max_length=200) author = models.CharField(max_length=100) published_date = models.DateField() def __str__(self): return self.title
模板(Template)示例:
<!-- books_list.html --> <!DOCTYPE html> <html> <head> <title>Book List</title> </head> <body> <h1>Books List</h1> <ul> {% for book in books %} <li>{ { book.title }} by { { book.author }}</li> {% endfor %} </ul> </body> </html>
视图(View)示例:
# views.py from django.shortcuts import render from .models import Book def book_list(request): books = Book.objects.all() # 获取所有书籍 return render(request, 'books_list.html', { 'books': books})
URL配置示例:
# urls.py from django.urls import path from .views import book_list urlpatterns = [ path('books/', book_list, name='book_list'), ]
在这个例子中,Book
模型定义了书籍的数据结构,book_list
视图函数从数据库中获取所有书籍,并使用books_list.html
模板来渲染这些书籍的列表。最后,URL配置将URL路径/books/
映射到book_list
视图。