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)
-
模板层中,可以使用
{{变量名}}
的语法调用视图传递来的变量