二、定义模板
1. 模板语言(DTL)主要内容
1)变量
2)标签 { % 代码块 % }
3)过滤器
4)注释{# 代码或html #}
2. 变量
1)语法:
{
{ variable }}
2)当模版引擎遇到一个变量,将计算这个变量,然后将结果输出
3)变量名必须由字母、数字、下划线(不能以下划线开头)和点组成
4)当模版引擎遇到点("."),会按照下列顺序查询:
- 字典查询,例如:foo["bar"] { {foo.bar}}
- 属性或方法查询,例如:foo.bar
- 数字索引查询,例如:foo[bar] { {all_students.0}}
5)如果变量不存在, 模版系统将插入'' (空字符串)
6)在模板中调用方法时不能传递参数
3. 在模板中调用对象的方法和属性
4. 标签
1)语法:{ % tag % }
2)作用
-
- 在输出中创建文本
- 控制循环或逻辑
- 加载外部信息到模板中供以后的变量使用
4.1 for标签
4.1.1 语法
{ %for ... in ...%}
循环逻辑
{ {forloop.counter}}
表示当前是第几次循环
{ %empty%}
给出的列表为或列表不存在时,执行此处
{ %endfor%}
4.2 if标签
4.2. 1语法
{ %if ...%}
逻辑
1
{ %elif ...%}
逻辑
2
{ %else%}
逻辑
3
{ %endif%}
4.3 comment标签,多行注释
{ % comment % }
多行注释
{ % endcomment % }
4.4 include:加载模板并以标签内的参数渲染
可以包含另外一个模块过来
{ %include "foo/bar.html" % }
4.5 url:反向解析
4.5.1 语法
语法:'p1'
和 'p2'
是数据
{ % url 'name' 'p1' 'p2' %}?=’get
请求方式
’
4.6 csrf_token:这个标签用于跨站请求伪造保护
{ % csrf_token %} 通常加在表单中不加而且没有关闭django csrf的中间件,会403错误
5. 过滤器
5.1 过滤器语法
1)语法:{ { 变量|过滤器 }}
2)例如{ { name|lower }},表示将变量name的值变为小写输出
3)使用管道符号 (|)来应用过滤器
4)通过使用过滤器来改变变量的计算结果
5.2 过滤器常用形式
1)可以在if标签中使用过滤器结合运算符
if list1|length > 1
2)过滤器能够被“串联”,构成过滤器链
name|lower|upper
3)过滤器可以传递参数,参数使用引号包起来
list|join:", "
引号必须为双引号
4)default:如果一个变量没有被提供,或者值为false或空,则使用默认值,否则使用变量的值
value|default:"
什么也没有
"
5)date:根据给定格式对一个date变量格式化
value|date:'Y-m-d'
6)escape:详见“HTML转义”
5.3 Django 过滤器表
过滤器 |