Python web实战之 Django 的 MVC 设计模式详解

e9e97db4320b4ceea0f7abc564086c59.png


 

技术栈:Python、Django、HTML、CSS、JavaScript。

概要

在 Web 开发中,MVC(Model-View-Controller)模式是一种非常常见的设计模式,它可以帮助我们更好地管理代码,提高代码的可维护性。今天就介绍如何使用 Django 框架实现 MVC 模式。


什么是 MVC 模式?

MVC 模式是一种软件设计模式,它将应用程序分为三个部分:模型(Model)、视图(View)和控制器(Controller)。MVC 模式的主要目的是将应用程序的不同部分分离开来,以便更好地管理代码和提高代码的可维护性。

  • 模型(Model): 模型是应用程序中处理数据和业务逻辑的部分。它是一个包含数据和方法的类,用于与数据库进行交互。模型通常包括数据验证、数据存储和数据检索等功能。

  • 视图(View): 视图是应用程序中显示数据的部分。它是一个包含 HTML、CSS 和 JavaScript 等内容的文件,用于将数据呈现给用户。视图通常包括用户交互、表单处理和模板渲染等功能。

  • 控制器(Controller): 控制器是应用程序中处理用户输入的部分。它是一个包含 URL、请求和响应等内容的文件,用于将用户请求路由到正确的视图和模型。控制器通常包括路由配置、请求处理和异常处理等功能。

还有其他语言的常见框架也用到MVC模式:

  • 1. ASP.NET MVC

  • 2. Ruby on Rails

  • 3. Spring MVC

  • 4. Express.js

  • 5. Django

  • 6. Laravel

  • 7. Zend Framework

  • 8. Struts

  • 9. CodeIgniter
     

MVC 模式的优点在于它将应用程序分为不同的部分,每个部分都有自己的职责和功能。这样可以使代码更容易理解和维护,提高开发效率。

Django 中的 MVC 模式

在 Django 中,MVC 模式被称为 MTV(Model-Template-View)模式,其中模板(Template)代替了控制器(Controller)。MTV 模式与 MVC 模式的概念类似,只是名称略有不同。

模型(Model)负责处理数据和业务逻辑,模板(Template)负责呈现数据,视图(View)负责处理用户请求并将请求路由到正确的模板和模型。

  • 在MVC模式中,控制器负责处理用户请求并更新模型和视图,以便呈现新的数据给用户。控制器通常是一个中央处理器,负责将用户请求与模型和视图之间的交互协调起来。

  • 在MTV模式中,视图也负责处理用户请求和业务逻辑,但是它通常不会更新模型,而是将模型中的数据传递给模板进行呈现。视图更像是一个数据处理器,负责从模型中检索数据,并将数据传递到模板中进行呈现。

 

Django 中的 MTV 模式实现

在 Django 中实现 MTV 模式非常简单,只需要按照以下步骤操作即可:

1. 创建 Django 项目

首先,我们需要创建一个 Django 项目。打开终端,输入以下命令:

django-admin startproject project_name

其中,project_name 为项目名称。

2. 创建 Django 应用

接下来,我们需要创建一个 Django 应用。打开终端,进入项目目录,输入以下命令:

python manage.py startapp app_name

其中,app_name 为应用名称。

3. 创建模型

在 Django 中,我们可以使用模型(Model)来定义数据结构。打开应用目录下的 models.py 文件,定义一个模型类,例如:

from django.db import modelsclass Book(models.Model):title = models.CharField(max_length=200)author = models.CharField(max_length=200)pub_date = models.DateTimeField('date published')

这里定义了一个名为 Book 的模型类,包括三个属性:titleauthor 和 pub_date

4. 创建视图

视图(View)是 Django 应用程序中处理用户请求的部分。打开应用目录下的 views.py 文件,定义一个视图函数,例如:

from django.shortcuts import render
from .models import Bookdef book_list(request):books = Book.objects.all()return render(request, 'book_list.html', {'books': books})

这里定义了一个名为 book_list 的视图函数,查询所有的书籍数据,并将它们传递给一个名为 book_list.html 的模板进行呈现。

5. 创建模板

模板(Template)是 Django 应用程序中呈现数据的部分。在应用目录下创建一个名为 templates 的目录,然后在该目录下创建一个名为 book_list.html 的文件,例如:

<!DOCTYPE html>
<html>
<head><title>Book List</title>
</head>
<body><ul>{% for book in books %}<li>{{ book.title }}, {{ book.author }}, {{ book.pub_date }}</li>{% endfor %}</ul>
</body>
</html>

这里定义了一个名为 book_list.html 的模板,使用 Django 模板语言来循环遍历所有的书籍数据,并将它们呈现为一个无序列表。

6. 配置 URL

最后,我们需要将视图函数与 URL 进行关联,以便 Django 能够正确地路由用户请求。打开应用目录下的 urls.py 文件,定义一个 URL 规则,例如:

from django.urls import path
from .views import book_listurlpatterns = [path('books/', book_list, name='book_list'),
]

这里定义了一个名为 book_list 的 URL 规则,将用户请求路由到名为 book_list 的视图函数。

 

技术总结

本文介绍了 Django 中 MTV(Model-Template-View)模式的实现方式。MVC 模式和 MTV 模式的概念非常相似。使用 MTV 模式可以将应用程序分为不同的部分,每个部分都有自己的职责和功能,从而提高代码的可维护性和开发效率。

欢迎点赞收藏转发,感谢🙏

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/20995.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RTT(RT-Thread)线程管理(1.2W字详细讲解)

目录 RTT线程管理 线程管理特点 线程工作机制 线程控制块 线程属性 线程状态之间切换 线程相关操作 创建和删除线程 创建线程 删除线程 动态创建线程实例 启动线程 初始化和脱离线程 初始化线程 脱离线程 静态创建线程实例 线程辅助函数 获得当前线程 让出处…

数组中的第K个最大元 O(N)

给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。 请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输入: [3,2,1,5,6,4], k 2…

[腾讯云Cloud Studio实战训练营]无门槛使用GPT+Cloud Studio辅助编程完成Excel自动工资结算

目录 前言一、Cloud Studio产品介绍1.1 注册Cloud Studio 二、项目实验2.1 选择合适的开发环境2.2 实验项目介绍2.3 实验步骤三、总结 前言 chatgpt简单介绍: ChatGPT是一种基于GPT的自然语言处理模型&#xff0c;专门用于生成对话式文本。它是OpenAI于2021年发布的&#xff0…

突破传统监测模式:业务状态监控HM的新思路 | 京东云技术团队

一、传统监控系统的盲区&#xff0c;如何打造业务状态监控。 在系统架构设计中非常重要的一环是要做数据监控和数据最终一致性&#xff0c;关于一致性的补偿&#xff0c;已经由算法部的大佬总结过就不再赘述。这里主要讲如何去补偿&#xff1f;补偿的方案哪些&#xff1f;这就…

TCP/IP协议

TCP/IP 是一类协议系统&#xff0c;它是用于网络通信的一套协议集合 物理层 所谓的物理层&#xff0c;是指光纤、电缆或者电磁波等真实存在的物理媒介。这些媒介可以传送物理信号&#xff0c;比如亮度、电压或者振幅。对于数字应用来说&#xff0c;我们只需要两种物理信号来分别…

leetcode 435. 无重叠区间

2023.8.3 本题和引爆气球 这题非常类似&#xff0c;利用同样的思路可以解决&#xff0c;代码如下&#xff1a; class Solution { public:static bool cmp(vector<int>& a , vector<int>& b){if(a[0] b[0]) return a[1] < b[1];return a[0] < b[0];…

SpringBoot复习:(16)TomcatStarter

直接在idea里运行SpringBoot程序时&#xff0c;内嵌的tomcat容器会调用TomcatStarter这个类的onStartup方法。TomcatStarter继承自ServletContainerInitializer 其onStartup方法会调用ServletContextInitializer&#xff08;不是ServletContainerInitializer)的onStartup方法.…

Unity 引擎做残影效果——3、顶点偏移方式

Unity实现残影效果 大家好&#xff0c;我是阿赵。 继续讲Unity引擎的残影做法。这次的残影效果和之前两种不太一样&#xff0c;是通过顶点偏移来实现的。 具体的效果是这样&#xff1a; 与其说是残影&#xff0c;这种效果更像是移动速度很快时造成的速度线&#xff0c;所以在移…

关于前后端分离

关于前后端分离 接下来&#xff0c;你将进入 前后端分离项目开发 模块。 这也是企业中比较常见的开发模式。 疑问&#xff1a; 什么是前后端分离&#xff1f;与之前的开发模式有什么区别&#xff1f;企业为什么要用前后端分离&#xff1f; 1. 什么是前后端分离&#xff1f;…

基于人工智能的状态监测帮助结束冷却塔的维护“噩梦”

冷却塔是将水蒸气冷却成较低温的水、将系统的废热排到大气层的排热装置&#xff0c;在工业生产中扮演着不可或缺的关键角色。大型工业冷却塔的主要用途是用来冷却在水冷系统中的循环水。这些水冷系统广泛应用于发电厂、炼油厂、石化厂、天然气制造厂、食品加工厂、半导体厂等工…

ARP断网攻击及防御

ARP断网攻击及防御 攻击防御 攻击 PC1的IP地址 10.9.136.222 PC2的IP地址 10.9.136.55在局域网里通信 需要有IP地址和MAC地址 两台电脑PC1和PC2要想相互通信&#xff0c;PC1在连接PC2的时候&#xff0c;PC1会先查看自己的ARP缓存表&#xff08;命令&#xff1a;arp -a &#xf…

校园跑腿小程序运营攻略

作为一名校园跑腿小程序的运营者&#xff0c;你可能会面临诸如用户获取、平台推广、服务质量保证等挑战。在本篇推文中&#xff0c;我将为你提供一些关键的运营策略&#xff0c;帮助你成功运营校园跑腿小程序。 1. 用户获取和留存 用户是校园跑腿小程序成功的关键。以下是一些…

C++如何用OpenCV中实现图像的边缘检测和轮廓提取?

最近有个项目需要做细孔定位和孔距测量&#xff0c;需要做边缘检测和轮廓提取&#xff0c;先看初步效果图&#xff1a; 主要实现代码&#xff1a; int MainWindow::Test() {// 2.9 单个像素长度um 5倍double dbUnit 2.9/(1000*5);// 定义显示窗口namedWindow("src"…

VR实景导航——开启3D可视化实景导航新体验

数字化时代&#xff0c;我们大家出门在外都是离不开各种导航软件&#xff0c;人们对导航的需求也越来越高&#xff0c;而传统的导航软件由于精度不够&#xff0c;无法满足人们对真实场景的需求&#xff0c;这个时候就需要VR实景导航为我们实景指引目的地的所在。 VR实景导航以其…

跨境多商户中日韩英多语言商城搭建(PC+小程序+H5),搭建方案

随着全球化的推进&#xff0c;跨境电商正变得越来越普遍。在本文中&#xff0c;我们将介绍跨境电商系统开发中多语言商城独立站的部署搭建方案。 准备工作 在开始部署搭建之前&#xff0c;需要准备以下环境&#xff1a; 服务器&#xff0c;确保服务器具备足够的性能和稳定性。 …

RF手机天线仿真介绍(一):金属边框天线和LDS天线

目录 简介LDS天线LDS天线仿真 金属边框天线金属边框天线仿真 简介 最早的手机是外置式天线&#xff0c;从NOKIA开始采用内置式天线&#xff0c;开始采用内置金属片&#xff08;一般是0.1MM厚的不锈钢片冲压而成&#xff09;&#xff0c;随后为降低成本&#xff0c;后来改用FPC…

powershell脚本写一个托盘图标

1、准备ico格式图标 star_bethlehem_icon 文件名改为star.ico 2、安装VSCode 如何下载安装VSCode 扩展&#xff1a;PowerShell扩展 3、创建项目 1、运行PowerShell命令 mkdir trayicon_ps1;cd trayicon_ps1;New-Item trayicon.ps1;code .2、将star.ico放入trayicon_ps1文…

DDS中间件设计

OpenDDS、FastDDS数据分发服务中间件设计 软件架构 应用层DDS层RTPS层传输层 软件层次 FastDDS整体架构如下&#xff0c;这里可以看到DDS和RTPS的关系。另外缺少一部分IDL&#xff08;统一描述语言&#xff09;&#xff0c;其应该是Pub、Sub的反序列化、序列化工具。 在RT…

Ubuntu安装harbor(http模式)并随便上传一个

Ubuntu安装harbor&#xff08;http模式&#xff09; docker和harbor的介绍就免了&#xff0c;都不知道啥东西&#xff0c;还安装搞毛 先安装docker环境 不要问&#xff0c;软件源之类的配置&#xff0c;挨个梭就行 sudo apt update sudo apt install apt-transport-https ca…

Python3 高级教程 | Python3 CGI编程(二)

目录 一、什么是CGI 二、网页浏览 三、CGI架构图 四、Web服务器支持及配置 五、第一个CGI程序 六、HTTP头部 七、CGI环境变量 八、GET和POST方法 &#xff08;一&#xff09;使用GET方法传输数据 &#xff08;二&#xff09;简单的url实例&#xff1a;GET方法 &#x…