1、传统个MVC模式
2、Django的MTV模式
3、Django模板层
(1) 什么是模板
- 模板是可以根据字典数据动态变化的HTML网页
- 模板可以根据视图中传递的字段数据动态生成相应的HTML网页
(2)模板配置
1) 创建模板文件夹 <项目名>/templates
2)在settings.py中 TEMPLATES配置项,修改DIRS 为创建的文件夹
TEMPLATES配置项参数介绍:
BACKEND: 指定模板的引擎
DIRS : 模板的搜索目录(可以是1个或多个)
APP_DIRS: 是否要在应用中的templates文件夹中搜索模板文件
OPTIONS: 有关模板的选项
(3)模板的加载方式
方案1 – 通过 loader 获取模板,通过HttpResponse进行响应
在视图函数中:
from django.template import loader
# 1.通过loader加载模板
t = loader.get_template('test_html.html')
# 2. 将t转换成 HTML 字符串
html = t.render(字典数据)
# 3. 用响应对象将转换的字符串内容返回给浏览器
return HttpResponse(html)
方案2 – 使用 render() 直接加载并响应模板
在视图函数中:
from django.shortcuts import render
return render(request, '模板文件名', 字典数据)
(4) 视图层与模板层之间的交互
1、视图函数中可以将Python变量封装到字典中传递到模板
样例:
def xxx_view(request):
dic = {
"变量1":"值1",
"变量2":"值2"
}
return render(request, '.html', dic)
2、模板中,可以用 {{变量名}} 的语法 调用视图传进来的变量
(5)案例
templates/test_html.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h3>我是模板层~~~~~~</h3>
</body>
</html>
urls.py
path('test_html', views.test_html),
views.py
def test_html(request):
# 方案1
from django.template import loader
t = loader.get_template('test_html.html')
html = t.render()
return HttpResponse(html)
# # 方案2
# from django.shortcuts import render
# dic = {"username": 'guoxiao', "age": 18}
# return render(request, 'test_html.html', dic)
浏览器输入:http://127.0.0.1:8000/test_html 结果展示如下:
上述代码可注释调方案1,使用方案2 再次运行操作,结果一致。
下一篇:5-Django模板层变量和标签