Django(1)-简介
Django(2)-创建项目及默认项目目录结构介绍
Django(3)-配置文件详解
Django(4)-URL和视图
Django(5)-路由配置实例
Django(6)-请求及响应
Django(7)-Get请求和Post请求
Django(8)-设计模式
Django(9)-模板层简介与入门实例
Django(10)-模板层的变量和标签
Django(11)-模板层的过滤器和继承
Django(12)-url反向解析
Django(13)-静态文件
Django(14)-应用及分布式路由
Django(15)-模型层及ORM介绍
Django(16)-ORM基础字段及选项
Django(17)-ORM创建数据
Django(18)-ORM常用的查询函数详解及实例演示
Django(19)-ORM条件查询
Django(20)-ORM更新操作及实例演示
Django(21)-ORM删除操作及实例演示
Django(22)-ORM中F对象和Q对象
Django(23)-ORM聚合查询和原生数据库操作
Django(24)-admin后台管理设置步骤以及常见样式详解
Django实战技巧(1)-开发测试生产环境配置切换处理技巧
Django实战技巧(2)-git代码仓分支管理技巧
Django实战技巧(3)-项目配置
1、模板简介
- 模板是可以根据字典数据动态变化的网页
- 模板可以根据视图中传递的字典数据动态生成响应的HTML网页
2、模板层配置
- 创建模板层文件夹 <项目名>/templates
- 在setting.py中TEMPLATES配置项
- BACKEND:指定模板的引擎
- DIRS:模板的搜索目录(可以是一个或者多个)
- APP_DIRS :是否要在应用中的templates文件夹中搜索模板文件
- OPTIONS:有关模板的选项
- 配置项中需要修改的部分:
- 设置DIRS
'DIRS':[BASE_DIR / 'templates'],
3、模板的加载方式
- 方式1:通过loader获取模板,通过HTTPResponse进行响应在视图函数中
在视图函数文件中:
from django.template import loader
t=loader.get_template("模板文件名")
html=t.render(字典数据)
return HttpResponse(html)
实例:
setting.py中对模板做如下设置:
然后在templates目录下创建一个test_html.html文件,内容如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h3>我是模板层页面</h3>
</body>
</html>
然后设计路由如下:
然后视图函数文件内容如下:
from django.http import HttpResponse,HttpResponseBadRequest
from django.template import loader
def test_html(request):
t=loader.get_template("test_html.html")
html=t.render()
return HttpResponse(html)
保存重启django后,在浏览器打开http://127.0.0.1:8080/test_html,结果如下:
- 方式2:使用render()直接加载并相应模板
from django.shortcuts import render
在视图函数中直接使用下面return语句即可
return render(request,"模板文件名",字典数据
实例:
设计路由如下:
在templates文件下依然创建test_html.html文件,内容如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h3>我是模板层页面</h3>
</body>
</html>
视图文件如下:
from django.shortcuts import render
def test_html(request):
return render(request,"test_html.html")
然后重启django后,在浏览器打开http://127.0.0.1:8080/test_html,结果如下:
- 方式2和方式1比较,最明显的就是视图函数变得更加简洁,更加简单,所以在后续开发过程中,通常使用方式2的方式
4、视图层与模板层之间的交互
- 视图函数中可以将python变量封装到字典中传递到模板
- 模板中,可以使用{{变量名}}的语法调用视图传进来的变量
实例:
设计如下路由:
templates目录下创建test_html.html文件,内容如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h3>用户名:{{username}},年龄:{{age}}</h3>
</body>
</html>
视图函数如下:
from django.shortcuts import render
def test_html(request):
info={"username":"redrose2100","age":20}
return render(request,"test_html.html",info)
保存重启django之后,在浏览器打开http://127.0.0.1:8080/test_html,结果如下,与期望一致,达到了视图函数中字典数据传递到了模板中去了的目的