当前位置: 首页 > 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 modelsclass 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 Bookdef 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_listurlpatterns = [path('admin/', admin.site.urls),path('books/', book_list, name='book_list'),
]

现在,当你运行Django开发服务器并访问http://127.0.0.1:8000/books/时,你将看到所有书籍的列表,这些数据通过MVT架构从数据库中被查询、处理并渲染到模板中[@1@][@2@][@3@]。

http://www.lryc.cn/news/452858.html

相关文章:

  • 集合框架01:集合的概念、Collection体系、Collection接口
  • shadcn-vue 快速开始
  • 智慧管控平台技术解决方案
  • 酒店业CRM和酒店数据管理大数据—未来之窗行业应用跨平台架构
  • 滚雪球学Oracle[8.1讲]:高级主题与未来趋势
  • 【Matlab绘图】从Excel导入表格并进行三维绘图
  • IDEA里面的长截图插件
  • (15)衰落信道模型作用于信号是相乘还是卷积
  • (C语言贪吃蛇)14.用绝对值方式解决不合理的走位
  • [深度学习]基于YOLO高质量项目源码+模型+GUI界面汇总
  • 仕考网:公务员国考有三不限岗位吗?
  • RabbitMq生产者可靠性
  • Linux Debian12使用Podman安装bwapp靶场环境
  • 小白快速上手 Docker 02 | Docker 容器生命周期
  • 深刻理解Redis集群(下):Redis 哨兵(Sentinel)模式
  • STM32重启源深度解析
  • windows配置C++编译环境和VScode C++配置(保姆级教程)
  • 【微信小程序前端开发】入门Day03 —— 页面导航、事件、生命周期、WXS 脚本及自定义组件
  • 【51单片机】点亮LED之经典流水灯
  • 深度学习数据增强的常用方法
  • 影院管理新篇章:小徐的Spring Boot应用
  • 【H2O2|全栈】关于CSS(9)CSS3扩充了哪些新鲜的东西?(二)
  • java中Files和File对象详情和区别比较
  • Unity3D PostLateUpdate为何突然占用大量时间详解
  • 如何快速熟悉项目
  • Spring Boot实现新闻个性化推荐
  • 优化后的版本
  • 【Linux系统编程】第二十七弹---文件描述符与重定向:fd奥秘、dup2应用与Shell重定向实战
  • 开放式耳机哪个品牌好?好用且高性价比的开放式蓝牙耳机推荐
  • 区间合并——模板题