变量
当模板系统遇到 ('.'), 按照顺序查找:
1.字典查询
2.属性或方法查询
3.数字索引查询
{% for k, v in defaultdict.iteritems %}
Do something with k and v here...
{% endfor %}
因为字典查询先发生,并提供了一个默认值,而不是预期的调用方法.iteritems(). 在这种情况,应该先转换成字典
过滤器
大多数过滤器返回字符串,使用过滤器做数学比较通常容易出错,length是个例外
{% if athlete_list|length > 1 %}
模板继承
获取父模板的内容可以使用 {{ block.super }} 变量
使用 {{ block.super }} 插入的数据不会被自动转义,因为父模板中的内容已经被转义。
自动HTML转义
默认情况是会进行自动HTML转义
转义的字符:
< 会转换为<
> 会转换为>
'(单引号) 会转换为'
" (双引号)会转换为 "
& 会转换为 &
关闭转义:
使用safe过滤器: {{ data|safe }}
使用标签 autoescape
{% autoescape off %}
Hello {{ name }}
{% endautoescape %}
如果在父模板中:
{% autoescape off %}
<h1>{% block title %}{% endblock %}</h1>
{% block content %}
{% endblock %}
{% endautoescape %}
那么子模板中自动转义也会关闭