python框架Django中的MTV架构
MTV架构
关注公众号“轻松学编程”了解更多。
通过V对M和T进行连接,用户通过T(界面)对服务器进行访问(发送请求),T把请求传给V(调度),V调用M(数据模型)获取数据,把数据给模板T进行渲染,然后再把渲染后的模板返回给用户。
####对MVC和MTV框架的理解
MVC框架与MTV框架可以理解为同一种框架,只是命名不一样,前者是相对于java等编程语言命名的,后者是相对于python命名的。
MVC框架(MTV框架)是一种 把业务逻辑、数据、界面显示分离而设计创建的Web 应用程序的开发模式。在web开发中应该尽量使代码高内聚低耦合,这样利于代码复用、维护、管理,而MVC框架(MTV框架)就是这样分层的。
M对应于Model,即数据模型(数据层),用于管理数据库,对数据进行增删改查;
V对应于view,即视图,python中的叫法是template(即T),模板,用于管理html文件,呈现给用户的界面;
C对应于controller,即控制层,python中的叫法是views(即V),视图调度器,用于访问数据层,获取数据,把数据调度给模板进行渲染,把渲染的结果返回给客户端。
MVC或MTV框架的大体流程是:
1、客户端发起请求,路由对客户发起的请求进行统一处理和分发给控制层;
2、控制层获取请求,访问数据层;
3、数据层对数据进行增删改查,把数据返回给控制层;
4、控制层获取数据,把数据调度给视图(模板);
5、视图(模板)对数据进行渲染,形成html文件返回给控制层;
6、控制层把渲染后的视图(模板)返回给客户端。
1、视图Views
在【应用目录/views.py】中创建路由响应函数
from django.http import HttpResponse def welcome(request):
return HttpResponse('HelloDjango');
在【应用目录/urls.py】中进行注册
from App import views
url(r'^welcome/',views.welcome)
在【项目的urls】中将【应用的urls】包含进来
from django.conf.urls import include
url(r'^welcome/',include('App.urls'))
2、模板Templates
模板就是HTML页面
在工程根目录创建模板文件夹templates
在【项目目录/settings.py】中注册模板文件夹
# 模板配置
TEMPLATES = [
{
...
# 注册模板文件夹路径
'DIRS': [
os.path.join(BASE_DIR, 'templates'),
],
...
},
]
在templates下创建xxx.html
在响应函数中返回渲染后的模板
方式1
from django.template import loader
def welcome():
template = loader.get_template('xxx.html')
return HttpResponse(template.render())
方式2
def welcome():
return render(request,'xxx.html')
访问静态资源
settings.py
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
html页面
{% load static %}
<img src="{% static 'img/dragon.gif' %}">
#或者 <img src="/static/img/{{ name.cName }}.jpg">
#其中{{ name.cName }}为变量
Django内置html模板:
3、模型Models
定义数据模型
定义年级
class Grade(models.Model):
gname = models.CharField(max_length=10)
gdate = models.DateTimeField()
ggirlnum = models.IntegerField()
gboynum = models.IntegerField()
isDelete = models.BooleanField()
定义学生
class Students(models.Model):
sname = models.CharField(max_length=20)
sgender = models.BooleanField(default=True)
sage = models.IntegerField()
sinfo = models.CharField(max_length=20)
isDelete = models.BooleanField(default=False) # 关联外键
sgrade = models.ForeignKey(Grade)
测试数据模型
进入python shell
- python manage.py shell
导入包
- from App.models import *
- from django.utils import timezone
- from datetime import *
增删改查
插入
grade_one = Grade()
设置属性值
grade_one.gname='python1705'
grade_one.gdate=datetime(year=2018,month=5,day=23)
grade_one.ggirlnum=5
grade_one.gboynum = 60
grade_one.isDelete = False
grade_one.save()
查询
- Grade.objects.all()
- Grade.objects.get(pk=1)
修改
- grade_one.gboynum = 55
- grade_one.save()
删除
- grade_one.delete()
对象关联(外键)
创建一个一年级学生
stu = Students() stu.sname='bill'
stu.sgender=True
stu.sage=20
stu.sinfo='我是比尔,不要杀我好吗' # 指定年级
stu.sgrade=grade_one stu.save()
获取一年级所有学生
- grade_one.students_set.all()
结合使用
在urls配置路由规则
在views中调用models中的函数进行查询
views向模板传递数据
在模板中对数据进行渲染
{% for student in students %}
{{student}}
{% endfor %}
views返回渲染后的模板
后记
【后记】为了让大家能够轻松学编程,我创建了一个公众号【轻松学编程】,里面有让你快速学会编程的文章,当然也有一些干货提高你的编程水平,也有一些编程项目适合做一些课程设计等课题。
也可加我微信【1257309054】,拉你进群,大家一起交流学习。
如果文章对您有帮助,请我喝杯咖啡吧!
公众号

微信

赞赏码


python框架Django中的MTV架构的更多相关文章
- python框架Django中MTV之Model(数据模型)
MTV框架之Model(数据模型) 关注公众号"轻松学编程"了解更多. 1.连接MySQL数据库 项目中的settings.py设置范例 # 配置数据库 DATABASES = { ...
- python框架django中结合vue进行前后端分离
一:创建django项目 1.django-admin startproject mysite # 创建mysite项目 2.django-admin startapp app01# 创建app01应 ...
- python框架Django中MTV框架之VIew(业务控制器)
MTV框架之VIew(业务控制器) 关注公众号"轻松学编程"了解更多. 1.什么是视图 视图层=路由表(urls.py)+视图函数(views.py) 其角色相当于MVC中的Con ...
- python框架Django中MTV框架之Template(模板/界面)
MTV框架之Template(模板/界面) 关注公众号"轻松学编程"了解更多. 1.模板目录位置 应用下 不需要注册 无法跨应用地进行复用 工程下 需要注册 settings.py ...
- Flask 中的MTV架构之Models
Flask 中的MTV架构之Models 1.Models(数据模型) 1.1 flask-sqlalchemy(数据库) 说明:提供了大多数关系型数据库的支持,而且提供了ORM # 安装: pi ...
- Flask中的MTV架构之Templates
Flask 中的MTV架构之Templates 关注公众号"轻松学编程"了解更多. 1.Templates(模板引擎) 1.1 说明 模板文件就是按照特定规则书写的一个负责展示 ...
- Flask 中的MTV架构之Views
Flask 中的MTV架构之Views 1.MVC与MTV 1.1 MVC M:model,模型,数据模型 V:view,视图,负责数据展示 C:controller,控制器,负责业务逻辑 ...
- 编程 - Python - 框架 - Django
一.Django简介 百度百科:一个开放源代码的Web框架,由Python语言编写...... 重点:一个大而全的框架,啥都替你考虑好了. 1. web框架介绍 具体介绍Django之前,必须先介绍W ...
- python框架Django简介与安装
Django简介 关注公众号"轻松学编程"了解更多. 发布于2005年,最负盛名且成熟的Python网络框架 最初用来制作在线新闻的Web站点 开源Web框架,遵守BSD协议 BS ...
随机推荐
- JS进阶系列-JS执行期上下文(一)
❝ 点赞再看,年薪百万 本文已收录至https://github.com/likekk/-Blog欢迎大家star,共同进步.如果文章有出现错误的地方,欢迎大家指出.后期将在将GitHub上规划前端学 ...
- javascript内置对象的innerText、innerHTML、join方法的认识
innerText语法规范:HTMLElement.innerText = string ;//后面的赋值是一个字符串形式 innerText是一个非标准形式,不识别HTML标签 返回值会去除空格和换 ...
- 037 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 04 switch结构
037 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 04 switch结构 本文知识点:Java中的switch结构 选择结构分类 选择结构只有如下2种 ...
- 更改MySQL 5.7的数据库的存储位置
操作系统:Windows 10 x64 MySQL安装包版本:mysql-installer-community-5.7.17.0 参考:MySQL 5.7版本的安装使用详细教程+更改数据库data的 ...
- DevOps元素周期表—2号元素Kibana
Kibana 是一款开源的数据分析和可视化平台,它是 Elastic Stack 成员之一,设计用于和 Elasticsearch 协作.您可以使用 Kibana 对 Elasticsearch 索引 ...
- SpringBoot整合Shiro+MD5+Salt+Redis实现认证和动态权限管理|前后端分离(下)----筑基后期
写在前面 在上一篇文章<SpringBoot整合Shiro+MD5+Salt+Redis实现认证和动态权限管理(上)----筑基中期>当中,我们初步实现了SpringBoot整合Shiro ...
- pycharm里面同级目录的py文件引用报错
使用pycharm开发py遇到很烦的事儿,就是在同级目录引用另外一个py文件,pycharm里面总是会红杠,代码还是 照样可以跑,只是看着烦. 查询了一下,通过将当前目录设置为sources_root ...
- ubuntu1804 snort base
1.环境准备 apt安装 sudo apt-get update -y sudo apt-get dist-upgrade -y sudo apt-get install -y zlib1g-dev ...
- PowerShell 语法
PowerShell 之 教程 PowerShell 中变量.函数命名等不区分大小写,但字符串区分大小写 powershell 脚本文件 扩展名为 .ps1 调用操作符 & + Cmd Cmd ...
- 4-20mA模拟量采集
4-20mA模拟量采集 4-20mA模拟量采集可选卓岚ZLAN6802(485)/ZLAN6842(以太网)/ZLAN6844(无线wifi)他们不仅可以可采集4~20mA还可以采集 /0~5V/0~ ...