django_设计模式和模板层
一、django的设计模式
1、传统MVC设计模式
(1)MVC(Model-View-Controller,模型-视图-控制器)模式。
- M--模型层,主要用于对数据库的封装;
- V--视图层,用于向用户展示结果(WHAT--什么数据 + HOW--怎么显示);
- C--控制,用于处理请求、获取数据、返回结果;
(2)MVC设计模式的作用:降低模块之间的耦合度(解耦)
(3)示意图:
2、django的MTV设计模式
(1)MTV(Model-Template-View,模型-模板-视图)模式。
- M-模型层,负责与数据库交互;
- T-模板层,负责呈现内容到浏览器(HOW--怎么显示);
- V-视图层,是核心,负责接受请求、获取数据、返回结果(WHAT--什么数据);
(2)MTV的作用与MTV是一致的,只是为了适应django框架自身的特点,将MVC的视图层拆成了T和V层;
(3)注意:django弱化了C层,但是实际上C层仍然存在,就是urls.py的path路由变量。在django中,控制层只负责做路由分发的作用。
(4)示意图:
二、模板层
1、什么是模板?
(1)模板是可以根据字典数据动态变化的html网页;
(2)模板可以根据视图中传递的字典数据动态生成相应的HTML网页。
2、模板配置
(1) 在项目根目录下创建templates文件夹。templates文件夹用于存放所有的html等样式文件。
(2)在setting.py文件中,修改TEMPLATES配置项。如下所示:
解释:
- BACKEND:默认是django模板自研解析引擎,用于完成调用、分发模板数据的功能。也可以适用第三方的引擎。
- DIRS:视图函数通过寻找DIRS下的路径,来找到对应html文件。DIRS是一个列表,用于存放拼接起来的html文件路径。
- APP_DIRS:是否要在应用中的templates文件夹中搜索模板文件。
- OPTIONS:有关模板的选项。默认值,不用更改。
重点关注DIRS。
(3)示例:
其中BASE_DIR是项目根目录。
3、模板的加载方式一
(1)格式:通过loader获取模板,通过HttpResponse进行响应。
示例:
注:
- loader.get_template("模板文件名"):根据文件名找到对应的HTML文件,并生成一个对象;
- t.render(字典数据):字典数据即将HTML中需要的动态参数,以字典的方式传给html对象,并返回一个html字符串
- 最后再通过HttpResponse返回浏览器显示。
(2)实战
a. 新建视图函数:
b. 新建html文件:
c. 增加url:
d. 测试结果
4、模板的加载方式二
(1)格式
(2)实战
a. 新建视图函数
b. 新建html文件
c. 增加url
d. 测试
三、总结
1、django的设计模式是MTV,实际是将MVC模式的V层拆成了T层和V层,原来的C层即django的urls.py。
2、模板层用于存放HTML等显示文件,并通过数据字典的方式将视图层传过来的参数进行解析、与HTML合在一起,并返回给浏览器。
3、加载模板有两种方式,一般使用第二种方式,即使用render()函数直接加载模板并响应模板。
django_设计模式和模板层的更多相关文章
- 03_Django-GET请求和POST请求-设计模式及模板层
03_Django-GET请求和POST请求-设计模式及模板层 视频:https://www.bilibili.com/video/BV1vK4y1o7jH 博客:https://blog.csdn. ...
- Django的模板层简介
Django的模板层 如果我们想要利用视图函数返回一个页面,一种比较简单的方式是利用HttpResponse()方法返回一个含有html内容的字符串: def current_datetime(req ...
- Django-5 模板层
Django 模板层 在之前的例子中,我们采用了硬编码的方式,来返回文本 def current_datetime(request): now = datetime.datetime.now() ht ...
- django学习笔记-模板层
模板层 将Python嵌入到HTML中. 模板简介 将HTML硬解码到视图并不是那么完美原因如下: 对页面设计时也需要对python代码进行相应的修改,模板可以不就行python代码修改的情况下变更设 ...
- django 实战篇之模板层
模板层 {{}} 变量相关 {%%} 逻辑相关 前端获取容器类型的数据统一使用 句点符(.) 两种给模板传递值的方式 return render(request,'index.html ...
- django——模板层
每一个Web框架都需要一种很便利的方法用于动态生成HTML页面. 最常见的做法是使用模板. 模板包含所需HTML页面的静态部分,以及一些特殊的模版语法,用于将动态内容插入静态部分. 说白了,模板层就是 ...
- Django基础模板层(75-76)
Django框架之模板层(d75)一 模版语法之变量: ** locals() 会把*该*视图函数内的变量,传到模板 ** return render(request, 'index.html' ...
- Django 的路由层 视图层 模板层
--------------------------------------------------------------通过苦难,走向欢乐.——贝多芬 Django-2的路由层(URLconf) ...
- DjangoMTV模型之视图层views及模板层template
Django视图层中views的内容 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容(render),也可以是一个重定向( ...
- python 全栈开发,Day69(Django的视图层,Django的模板层)
昨日内容回顾 相关命令: 1 创建项目 django-admin startproject 项目名称 2 创建应用 python manage.py startapp app名称 3 启动项目 pyt ...
随机推荐
- VIM的撤销与恢复设置行数
vim撤销操作:u vim恢复操作:ctrl+r 设置行数: :set nu
- oracle之如何获取执行计划方法
1.什么是执行计划 为了执行sql语句,Oracle在内部必须实现许多步骤,这些步骤可能是从数据库中物理检索数据行,或者用某种方法来准备数据行等,接着Oracle会按照一定的顺序一次执行这些步骤,最后 ...
- swing01
基于Eclipse和Mysql 快捷键: 类的备注:/** +enter main方法快捷方式:main alt+/ 自动提示:alt+/ 提示报错:ctrl+1 输出语句快捷方式:syso alt+ ...
- proguard-maven-plugin混淆代码排除方法
当使用proguard-maven-plugin混淆代码时,如果要排除某个类中某个方法不混淆,务必参数指定全路径类名,否则会不生效.
- JS实现打字效果(_会闪烁)
背景 更新博客园个人博客时,突发奇想想要将子标题的入场特效做成类似Linux命令行输命令时的样式 效果网页:LanceEst - 博客园 (cnblogs.com) 思路和代码 1 <h2 id ...
- unity shader ide
Shader Languages support for vs Code https://marketplace.visualstudio.com/items?itemName=slevesque.s ...
- php递归设置文件的权限
function recursiveDelete($dir) { // 打开指定目录 if ($handle = @opendir($dir)) { while (($file = readdir($ ...
- JAVA远程调用 webService
package com.example.demo; import org.apache.cxf.endpoint.Client; import org.apache.cxf.jaxws.endpoin ...
- ubuntu的vsftpd
先输入vsftp -v查看自己的ubuntu是不是已经安装了vsftpd 没有安装的样子 安装的样子 如果没有安装先安装,输入下面的东西 apt-get install vsftpd 进行安装,安装好 ...
- HTTP请求报文(请求行,请求头,请求体)
HTTP协议 1.简介 HTTP协议(Hyper Text Transfer Protocol,超文本传输协议),是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的 ...