Django的MVT(Model-View-Template)架构是一种将应用程序的不同部分分离的方法,旨在提高代码的可维护性和可扩展性。MVT将应用分解为三个主要部分:Model(模型)、View(视图)和Template(模板)。下面,我将通过一个简单的示例来展示如何在Django项目中实现MVT架构。
1. Django MVT概念和作用
- Model:负责处理与数据库相关的逻辑,如数据的存取、验证等。
- View:处理业务逻辑,并决定调用哪个模板来展示数据。
- Template:负责生成页面展示的HTML内容,可以使用Django的模板语言来动态渲染数据。
2. 创建一个简单的Django项目
首先,使用Django的命令行工具创建一个新项目和一个应用。这里假设你已经安装了Django。
django-admin startproject myproject
cd myproject
python manage.py startapp myapp
3. 在项目中定义一个模型(Model)类
在myapp/models.py
中定义一个简单的模型,比如一个Book
模型。
# myapp/models.py
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.CharField(max_length=50)
publish_date = models.DateField()
def __str__(self):
return self.title
然后,你需要为这个模型生成数据库迁移文件并应用这些迁移。
python manage.py makemigrations
python manage.py migrate
4. 创建一个视图(View)函数来处理模型数据
在myapp/views.py
中定义一个视图函数,该函数将查询数据库中的书籍数据并返回给模板。
# myapp/views.py
from django.shortcuts import render
from .models import Book
def book_list(request):
books = Book.objects.all()
return render(request, 'myapp/book_list.html', {'books': books})
5. 创建一个模板(Template)来展示视图传递的数据
在myapp/templates/myapp/
目录下(如果没有这些目录,请手动创建它们)创建一个名为book_list.html
的模板文件。
<!-- myapp/templates/myapp/book_list.html -->
<!DOCTYPE html>
<html>
<head>
<title>Book List</title>
</head>
<body>
<h1>Book List</h1>
<ul>
{% for book in books %}
<li>{{ book.title }} by {{ book.author }} - {{ book.publish_date }}</li>
{% endfor %}
</ul>
</body>
</html>
确保在myproject/settings.py
中的TEMPLATES
配置中包含了你的模板路径,通常Django会自动包含应用的templates
目录。
6. 配置URL路由
最后,你需要在myproject/urls.py
(或myapp/urls.py
,如果你已经按照Django的习惯将URL配置放在应用目录中)中配置一个URL来指向你的视图函数。
# myproject/urls.py
from django.urls import path
from django.contrib import admin
from myapp.views import book_list
urlpatterns = [
path('admin/', admin.site.urls),
path('books/', book_list, name='book_list'),
]
现在,当你运行Django开发服务器并访问http://127.0.0.1:8000/books/
时,你将看到所有书籍的列表,这些数据通过MVT架构从数据库中被查询、处理并渲染到模板中[@1@][@2@][@3@]。