系列文章目录
第一章 Django使用的基础知识
第二章 setting.py文件的配置
第三章 路由的定义与使用
第四章 视图的定义与使用
第五章 二进制文件下载响应
第六章 Http请求&HttpRequest请求类
第七章 会话管理(Cookies&Session)
第八章 文件上传实现
第九章 多种视图view
第十章 Django5模板引擎
第十一章 模型定义与使用
第十二章 ORM执行SQL语句和事务
第十三章 表单定义与使用
第十四章 内置Admin系统
第十五章 内置Auth认证系统
前言
Django作为Web框架,需要一种很便利的方法动态的生成HTML网页,因此有了模板这个概念。模板包含所需HTML的部分代码以及一些特殊语法,特殊语法用于描述如何将视图传递的数据插入HTML网页中。
Django可以配置一个或多个模板引擎(甚至是0个,如前后端分离,Django只提供API接口,无须使用模板引擎),模板引擎有Django模板语言(Django Template Language,DTL)和jinja3.Django模板语言是Django内置的功能之一,jinja3是当前Python流行的模板语言。本章分别讲述Django模板语言和jinja3的使用方法。
Django5内置模板引擎
Django 内置的模板引擎包含模板上下文(亦可称为模板变量)、标签和过滤器,各个功能说明如下:
-
模板上下文是以变量的形式写入模板文件里面,变量值由视图函数或视图类传递所得。
-
标签是对模板上下文进行控制输出,比如模板上下文的判断和循环控制等。
-
模板继承隶属于标签,它是将每个模板文件重复的代码抽取出来并写在一个共用的模板文件中,其他模板文件通过继承共用模板文件来实现完整的网页输出。
-
过滤器是对模板上下文进行操作处理,比如模板上下文的内容截取、替换或格式转换等。
1.模板上下文
模板上下文是模板中基本的组成单位,上下文的数据由视图函数或视图类传递。它以{ { variable }}表示,variable是上下文的名称,它支持 Python 所有的数据类型,如字典、列表、元组、字符串、整型或实例化对象等。上下文的数据格式不同,在模板里的使用方式也有所差异。
使用变量的一些注意点如下:
- 当模板引擎遇到一个变量,将计算这个变量,然后输出结果
- 变量名必须由字母、数字、下划线、点组成,不能由数字和下划线开头
- 当模板引擎遇到 “ . ” 的时候,按以下顺序进行解析
- 按照 dict 解析 var[key]
- 按照对象的属性或方法解析 var.var/func
- 按照索引解析 var[index]
- 如果变量不存在,不会引发异常,模板会插入空字符串 ‘’
- 在模板中使用变量或方法时,不能出现 ()、[]、{}
- 调用方法时,不能传递参数
实例:
在view中添加函数:
def modelEngine(request):
myStr = "我是字符串"
class student:
name = '张三'
age = 18
sex = '男'
def __init__(self, name, age, sex):
self.name = name
self.age = age
self.sex = sex
lisi = student('李四', 19, '女')
myTuple = ('元组1',443,'元组2',111.1)
myList = [1,2,'ggbond',4,'列表5']
myDict = {
'name':'小弟','age':18,'sex':'中性人'}
contentValues = {
'msg1': myStr, 'msg2': lisi, 'msg3': myTuple, 'msg4': myList, 'msg5': myDict}
return render(request, 'modelEngine.html',context=contentValues)
urls里加路径:
path('modelengine/',helloWorld.views.modelEngine)
添加个模板modelEngine.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>模板引擎测试</title>
</head>
<body>
<p>字符串测试:{
{ msg1 }}</p>
<p>对象测试:对象姓名:{
{ msg2.name }}、对象年龄:{
{ msg2.age }}、对象性别:{
{ msg2.sex }}、对象爱好:{
{ msg2.hobby }}、对象:{
{ msg2}}</p>
<p>元组测试:元组第一个{
{ msg3.0 }}、元组第三个“{
{ msg3.2 }}”、元组第四个{
{ msg3.3 }}、元组:{
{ msg3 }}</p>