当前位置: 首页 > news >正文

Django学习笔记一:MVT的示例

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@]。

相关文章:

  • 用java编写飞机大战
  • OpenAPI3常用注解
  • pygame--超级马里奥(万字详细版)
  • 【Android 源码分析】Activity生命周期之onDestroy
  • 游戏中的对象池技术探索(一)
  • C语言之文件操作
  • GWAS分析中显著位点如何注释基因:excel???
  • 利用Python进行文本处理的9个实用函数
  • 华为仓颉语言入门(9):for-in表达式
  • LeetCode讲解篇之2466. 统计构造好字符串的方案数
  • 【机器学习基础】Transformer学习
  • USB启动盘制作工具
  • 网络安全自学入门:(超详细)从入门到精通学习路线规划,学完即可就业
  • 【C++】显示声明与隐式声明的使用与区别
  • Redission · 可重入锁(Reentrant Lock)
  • CSP-J/S 复赛算法 树形动态规划
  • 一文讲清楚退耦电容的位置摆放及其过孔设计
  • 零基础入门AI大模型应用开发,你需要一个系统的学习路径!
  • 鸿蒙next开发者第一课02.DevEcoStudio的使用-习题
  • 高效查找服务器漏洞
  • 最美西游、三星堆遗址等入选“2025十大年度IP”
  • 《淮水竹亭》:一手好牌,为何打成这样
  • 城事 | 重庆新增热门打卡地标,首座熊猫主题轨交站亮相
  • 民生谣言误导认知,多方联动守护清朗——中国互联网联合辟谣平台2025年4月辟谣榜综述
  • 成都锦江区一在建工地起火,致2人遇难1人受伤
  • 德国将不再公布对乌克兰军事支持的细节