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 }} # 统计字数
浙公网安备 33010602011771号