django dtl 模板操作语言
参考:https://docs.djangoproject.com/zh-hans/2.0/ref/templates/builtins/
1.变量
{{viriable}}
例如{{book.name}}
name可以为属性,也可以为model对象方法,也可以后面加索引
2.标签
{% xxx %}
for标签,示例如下
{% for hero in heros %} {% if forloop.counter|divisibleby:"2" %} <li style="color: red;">{{ forloop.counter }}:{{ forloop.counter0 }}:{{ hero.hname }}</li> {% else %} <li style="color: green;">{{ forloop.counter }}:{{ forloop.counter0 }}:{{ hero.hname }}</li> {% endif %} {% empty %} <li>啥也没找到</li> {% endfor %}
for中常用属性:
forloop.counter 索引从 1 开始算 forloop.counter0 索引从 0 开始算 forloop.revcounter 索引从最大长度到 1 forloop.revcounter0 索引从最大长度到 0 forloop.first 当遍历的元素为第一项时为真 forloop.last 当遍历的元素为最后一项时为真 forloop.parentloop 用在嵌套的 for 循环中,获取上一层 for 循环的 forloop
if 标签:
{ %if ...%} 逻辑1 { %elif ...%} 逻辑2 { %else%} 逻辑3 { %endif%}
comment标签:
{ % comment % }
多行注释
{ % endcomment % }
csrf_token标签:(防止跨站攻击)
{ % csrf_token %}
autoescape标签:设置转义开关
{% autoescape off %}
{{ t1 }}
{% endautoescape %}
或者使用过滤器:
{{t1|safe}}#关闭转义 {{t1|escape}}#使用转义,默认不使用escape,即默认使用转义
特别的:视图传向模板的数据,是转义的,模板内的标签数据不转义
Django会将如下字符自动转义: < 会转换为< > 会转换为> ' (单引号) 会转换为' " (双引号)会转换为 " & 会转换为 &
include标签:(加载模板)
{ %include "foo/bar.html" % }
url标签:(反向解析url)
{ % url 'name' p1 p2 %}
{% url 'some-url-name' arg arg2 as the_url %} <a href="{{ the_url }}">链接到:{{ the_url }}</a>
firstof标签:
{% firstof var1 var2 var3 %}等价于: {% if var1 %} {{ var1 }} {% elif var2 %} {{ var2 }} {% elif var3 %} {{ var3 }} {% endif %}
block标签(继承后可以重写)
extends标签:(继承)
3.过滤器
语法:{ { 变量|过滤器 }}
{{ value|add:"2" }} # 加法 {{ value|add:"-2" }} # 减法 {{forloop.counter|divisibleby:"2" }} #取模 乘法 A*B: {% widthratio A 1 B %} 除法 A/B: {% widthratio A B 1 %} 计算 A^2: {% widthratio A 1 A %} 计算 (A+B)^2: {% widthratio A|add:B 1 A|add:B %} 计算 (A+B) * (C+D): {% widthratio A|add:B 1 C|add:D %} {{ value|capfirst }} # 首字母大写 {{ value|title }} # 句子单词首字母大写 {{ value|center:"15" }} # 文字居中,剩余填充 {{ value|ljust:"10" }} # 文字左对齐,剩余填充 {{ value|rjust:"10" }} # 文字右对齐,剩余填充 {{ value|cut:" " }} # 移除空白 {{ value|date:"D d M Y" }} # 日期格式化 {{ value|time:"H:i" }} # 时间格式化 {{ value|default:"nothing" }} # 空值默认 {{ value|default_if_none:"nothing" }} # None值默认 {{ value|dictsort:"name" }} # 字典排序 {{ value|filesizeformat }} # 文件大小格式化 {{ value|first }} # 序列的第一个值 {{ value|last }} # 序列最后一个值 {{ value|floatformat:3 }} # 浮点值精度 {{ value|join:" // " }} # 序列拼接 {{ value|make_list }} # 字符串转列表 {{ value|length }} # 序列长度 {{ value|length_is:"4" }} # 长度判断 {{ value|lower }} # 字符串转小写 {{ value|upper }} # 字符串转小写 {{ value|random }} # 序列中随机取值 {{ some_list|slice:":2" }} # 切片 {{ value|striptags }} # 去除标签 {{ value|truncatechars:9 }} # 控制输出字符长度,超出省略号 {{ value|truncatewords:2 }} # 控制输出单词长度,超出省略号 {{ value|wordcount }} # 统计字数