07. Django基础:Django的设计模式及模板层
一、MVC和MTV
1.1. MVC
MVC代表Model-View-Controller(模型-视图-控制器)模式。
M模型层(Model),主要用于对数据库层的封装
V视图层(View),用于向用户展示结果(WHAT + HOW)
C控制(Controller),用于处理请求、获取数据、返回结果(重要)
作用:降低模块间的耦合度(解耦)
1.2. MTV
Django的MTV设计模式
MTV代表Model-Template-View(模型-模板-视图)模式。
- M模型层(Model),负责与数据库交互
- T模板层(Template),负责呈现内容到浏览器(HOW)
- V视图层(View),核心,负责接收请求、获取数据、返回结果(WHAT)
作用:降低模块间的耦合度(解耦)
1.3. MTV - 诞生记
二、模板层
2.1. 什么是模板
- 模板是可以根据字典数据动态变化的HTML界面
- 模板可以根据视图中传递的字典数据动态生成相应的HTML网页。
2.2. 模板配置
创建模板文件夹<项目名>/templates
在setting.py中TEMPLATES配置项
- BACKEND:指定模板引擎
- DIRS:模板的搜索目录(一个或多个)
- APP_DIRS:是否要在应用的templates文件夹中搜索模板文件
- OPTIONS:有关模板的选项
配置项中需要修改部分
设置DIRS — ‘DIRS’:[os.path.join(BASE_DIR,‘templates’)]
效果
2.3. 模板的加载方式
方案一:通过loader获取模板,然后通过HttpResponse进行响应
在视图函数中
from django.template import loader # 1. 通过loader加载模板 t = loader.get_template("模板文件名") # 2. 将t转换成HTML字符串 html = t.render(字典数据) # 3. 用响应对象将转换的字符串内容返回给浏览器 return HttpResponse(html)
方案二:使用render()直接加载并响应模板
在视图函数中
from django.shortcuts import render return render(request,'模板文件名',字典数据)
三、视图层与模板层之间的交互
视图函数中可以将Python变量封装到字典中传递到模板。
样例:
def xxx_view(request):dic = {"变量1":"值1","变量2":"值2",}return render(request,'xxx.html',dic)
模板层中,可以使用
{{变量名}}
的语法调用视图传递来的变量
07. Django基础:Django的设计模式及模板层相关推荐
- Django - 设计模式及模板层
MVC和MTV MVC = Model - View - Controller (模型 - 视图 - 控制器)模式 M层主要用于对数据库的封装 V层主要用于向用户展示结果 C层用于处理请求.获取数据. ...
- Django基础--Django基本命令、路由配置系统(URLconf)、编写视图、Template、数据库与ORM...
web框架 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构. 使用框架可以帮你快速开发特定的系统. 简单地说,就是你用别人搭建好的舞台来做表演. 尝试搭建一个简单 ...
- Django基础---Web框架、URL路由、视图函数、模板系统
文章目录 Django基础 Django基础---Web框架 MVC和MTV框架 MVC MTV Django下载与安装 基于Django实现一个简单的示例 get请求获取数据 post请求获取数据 ...
- django基础入门之搭建博客系统
Django基础 Django采用了MVC的软件设计模式,即模型M,视图V和控制器C. 安装django: pip install django=版本 新建一个目录文件进入cmd 启动一个项目 d ...
- Django基础(11): 表单集合Formset的高级用法详解
Formset(表单集)是多个表单的集合.Formset在Web开发中应用很普遍,它可以让用户在同一个页面上提交多张表单,一键添加多个数据,比如一个页面上添加多个用户信息.今天小编我就介绍下Djang ...
- ajax调用api改表格数据库,【django基础】django接口 异步ajax请求 导出数据库成excel表(包裹前端后端)...
py文件: from django.utils.http import urlquote from rest_framework.views import APIView from django.sh ...
- Django基础(35): 全局上下文处理器(Context Processors)详解及如何自定义模板上下文处理器...
Django的Context Processors的中文名字有很多种,有人翻译成文本处理器,也有人翻译成上下文处理器.小编最喜欢的翻译是全局上下文处理器,因为它的主要作用就是向模板传递需要全局使用的变 ...
- 学一点django基础
学一点Django基础 目录 文章目录 目录 一.Django框架的介绍 Django的安装 Django框架开发 创建项目的指令 Django项目的目录结构 URL 介绍 视图函数(view) Dj ...
- Django基础教程
一.Django基础与设计模型 1.Django是什么? Django 是用 Python 开发的一个免费开源的 Web 框架,可以用于快速搭建高性能.优雅的网站,Django 提供了许多网站后台开发 ...
- Django(10)-模板层的变量和标签
Django(1)-简介 Django(2)-创建项目及默认项目目录结构介绍 Django(3)-配置文件详解 Django(4)-URL和视图 Django(5)-路由配置实例 Django(6)- ...
最新文章
- 解决win2003下IIS中建立ASP网站出现500内部错误的方法(BUG)
- Codeforces Round #570 (Div. 3)
- 绘制机械图c语言编程,求用C语言绘制机械三视图程序?
- 这些明星日入斗金,为什么还要贷款?
- 使用IntelliJ书签
- [Node.js] 模块化 -- 爬虫
- vue中进度条写法_vue实现简单loading进度条
- 软件项目管理原则谈-转自51testing
- Linux下创建和删除软、硬链接(ln)
- 电脑同时安装python2和3_电脑上同时安装Python2和Python3
- 计算机科技的主题,科技感十足的电脑桌面,私藏多年,60多个主题和皮肤统统给大家...
- CentOS7 原生 yum 源修改为阿里 yum 源
- ureport 显示html,UReport2 与业务结合
- java redis教程视频_2020年Java视频教程-Redis全集
- matlab距离平方和公式推导,求助高手,用matlab求两幅图像平方和再开根号公式怎样表达?...
- 『学习资料推荐』百家讲坛中国历史音频珍藏版
- Python的Excel/Word库
- 一、科里奥利质量流量计
- Git 工具 - 储藏(Stashing) git stash 暂存现在工作区的内容
- 西门子1200PLC模拟量测温案例1
热门文章
- 77. PHP 文件读取
- 7. JavaScript RegExp 对象
- java如果目录不存在则创建目录_java – 创建一个目录,如果它不存在,然后再创建该目录中的文件...
- 机器学习数据特征归一化的目的及方式
- VS2017 无法使用XXX附加到应用程序
- 解决IIS无法启动w3svc
- 【Eclipse】Eclipse-Build-缓慢-卡住
- [转]Using TRY...CATCH in Transact-SQL
- bzoj 1047 理想的正方形
- flask+uswgi+nginx+python3.6的venv发布网站ubuntu14.04