autoescape
控制当前的自动转义行为。此标记采用on或 off作为参数,并确定自动转义是否在块内生效。该块以endautoescape结束标记关闭。
{% autoescape on %}
{{ body }}
{% endautoescape %}
block
定义可由子模板覆盖的块
comment
忽略之间的所有内容。可以在第一个标签中插入可选的注释。例如,在注释掉用于记录代码被禁用的原因的代码时,这非常有用。
<p>Rendered text with {{ pub_date|date:"c" }}</p>
{% comment "Optional note" %}
<p>Commented out text with {{ create_date|date:"c" }}</p>
{% endcomment %}
csrf_token
此标记用于CSRF保护
cycle
每次遇到此标记时都会生成其中一个参数。第一个参数是在第一次遇到时产生的,第二个参数是在第二次遇到时产生的,依此类推。一旦所有参数都耗尽,标记将循环到第一个参数并再次生成它。(可以使用变量)
{% for o in some_list %}
<tr class="{% cycle 'row1' 'row2' %}">
...
</tr>
{% endfor %}
{% cycle 'row1' 'row2' as rowcolors %}
作为变量使用
debug
输出一整套调试信息,包括当前上下文和导入的模块。
extends
表示此模板扩展父模板的信号,可以继承变量和值,能够使用相对路径
filter
通过一个或多个过滤器过滤块的内容。可以使用管道指定多个过滤器,过滤器可以具有参数,就像在变量语法中一样。
请注意,该块包含和 标记之间的所有文本。filterendfilter
{% filter force_escape|lower %}
This text will be HTML-escaped, and will appear in all lowercase.
{% endfilter %}
firstof
输出第一个不是的参数变量False。如果所有传递的变量都没有输出False。
{% firstof var1 var2 var3 %}
此标记自动转义变量值。您可以使用以下命令禁用自动转义
{% autoescape off %}
{% firstof var1 var2 var3 "<strong>fallback value</strong>" %}
{% endautoescape %}
或者,如果只应转义某些变量,您可以使用:
{% firstof var1 var2|safe var3 "<strong>fallback value</strong>"|safe %}
您可以使用语法将输出存储在变量中。{% firstof var1 var2 var3 as value %}
for
循环遍历数组中的每个项目,使项目在上下文变量中可用
<ul>
{% for athlete in athlete_list %}
<li>{{ athlete.name }}</li>
{% endfor %}
</ul>
您可以使用反向循环遍历列表 。{% for obj in list reversed %}
如果您的上下文包含字典data,则以下内容将显示字典的键和值
{% for key, value in data.items %}
{{ key }}: {{ value }}
{% endfor %}
变量 | 描述 |
---|---|
forloop.counter | 循环的当前迭代(1索引) |
forloop.counter0 | 循环的当前迭代(0索引) |
forloop.revcounter | 循环结束时的迭代次数(1索引) |
forloop.revcounter0 | 循环结束时的迭代次数(0索引) |
forloop.first | 如果这是第一次通过循环,则为真 |
forloop.last | 如果这是最后一次循环,则为真 |
forloop.parentloop | 对于嵌套循环,这是围绕当前循环的循环 |
for...... empty
该for标签可以使用一个可选条款,其文本显示,如果给定的数组为空或无法找到:{% empty %}
<ul>
{% for athlete in athlete_list %}
<li>{{ athlete.name }}</li>
{% empty %}
<li>Sorry, no athletes in this list.</li>(为空显示此条)
{% endfor %}
</ul>
if
所述标签计算一个变量,并且如果该变量是“真”(即存在,不为空,并且不是假布尔值)的数据块的内容被输出
{% if athlete_list %}
Number of athletes: {{ athlete_list|length }}
{% elif athlete_in_locker_room_list %}
Athletes should be out of the locker room soon!
{% else %}
No athletes.
{% endif %}
布尔运算符 and or not
and 优先级高于or
{% if athlete_list and coach_list %}
Both athletes and coaches are available.
{% endif %}
{% if not athlete_list %}
There are no athletes.
{% endif %}
{% if athlete_list or coach_list %}
There are some athletes or some coaches.
{% endif %}
{% if not athlete_list or coach_list %}
There are no athletes or there are some coaches.
{% endif %}
{% if athlete_list and not coach_list %}
There are some athletes and absolutely no coaches.
{% endif %}
其他布尔运算符
符号 | 意义 |
---|---|
== | 判断等于 |
!= | 不等于 |
< | 小于 |
> | 大于 |
>=,<= | 大于等于,小于等于 |
in,not int | 包含在内以及否定(字符串包含和列表包含) |
is,is not | 对象身份。测试两个值是否是同一个对象 |
过滤器
{% if messages|length >= 100 %}
You have lots of messages today!
{% endif %}
ifequal和ifnotequal
{% ifequal a b %} ... {% endifequal %}是一种过时的写作方式 。同样,被取代。在和标签将在未来的版本中将会弃用。{% if a == b %} ... {% endif %}{% ifnotequal a b %} ... {% endifnotequal %}{% if a != b %} ... {% endif %}ifequalifnotequal
ifchanged
检查一个值是否从循环的最后一次迭代中发生了变化。
include
加载模板并使用当前上下文呈现它。这是一种在模板中“包含”其他模板的方法。(可用变量)
您可以使用关键字参数将其他上下文传递给模板
{% include "name_snippet.html" with person="Jane" greeting="Hello" %}
如果只想使用提供的变量(甚至根本没有变量)渲染上下文,请使用该only选项。包含的模板没有其他变量可用:
{% include "name_snippet.html" with greeting="Hi" only %}
不推荐使用
load
加载自定义模板标记集。
例如,以下模板将加载在包中注册somelibrary和otherlibrary位于包中的 所有标记和过滤器package
{% load somelibrary package.otherlibrary %}
您还可以使用from参数从库中选择性地加载单个过滤器或标记。在此示例中,模板标记/过滤器已命名foo 并将bar从somelibrary以下位置加载
{% load foo bar from somelibrary %}
lorem
显示随机的“lorem ipsum”拉丁文。这对于在模板中提供样本数据非常有用。
{% lorem [count] [method] [random] %}
参数 | 描述 |
---|---|
count | 包含要生成的段落或单词数的数字(或变量)(默认值为1)。 |
method | 无论是w对词,p对HTML段落或b 为纯文本段落块(默认为b)。 |
random | 这个词random,如果给出,在生成文本时不使用共同段落(“Lorem ipsum dolor sit amet ...”)。 |
now
使用根据给定字符串的格式显示当前日期和/或时间。此类字符串可以包含格式说明符字符,
It is {% now "jS F Y H:i" %}
传递的格式也可以是预定义者之一 DATE_FORMAT
,DATETIME_FORMAT
, SHORT_DATE_FORMAT
或SHORT_DATETIME_FORMAT
。预定义格式可能会根据当前区域设置和启用的格式化本地化而有所不同,
regroup
通过公共属性重新组合相似对象的列表
cities = [
{'name': 'Mumbai', 'population': '19,000,000', 'country': 'India'},
{'name': 'Calcutta', 'population': '15,000,000', 'country': 'India'},
{'name': 'New York', 'population': '20,000,000', 'country': 'USA'},
{'name': 'Chicago', 'population': '7,000,000', 'country': 'USA'},
{'name': 'Tokyo', 'population': '33,000,000', 'country': 'Japan'},
]
您可以使用标记按国家/地区对城市列表进行分组。
{% regroup cities by country as country_list %}
<ul>
{% for country in country_list %}
<li>{{ country.grouper }}
<ul>
{% for city in country.list %}
<li>{{ city.name }}: {{ city.population }}</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
- 印度
- 孟买:19,000,000
- 加尔各答:15,000,000
- 美国
- 纽约:20,000,000
- 芝加哥:7,000,000
- 日本
- 东京:33,000,000
resetcycle
重置上一个循环,以便在下次遇到时从第一个项目重新开始。
spaceless
删除HTML标记之间的空格。这包括制表符和换行符。
只删除标签之间的空格- 而不是标签和文本之间的空格。
templatetag
输出用于组成模板标记的语法字符之一
由于模板系统没有“转义”的概念,因此要显示模板标签中使用的其中一个位,必须使用该标签。{% templatetag %}
参数 | 输出 |
---|---|
openblock | {% |
closeblock | %} |
openvariable | {{ |
closevariable | }} |
openbrace | { |
closebrace | } |
opencomment | {# |
closecomment | #} |
{% templatetag openblock %} url 'entry_list' {% templatetag closeblock %}
url
回与给定视图和可选参数匹配的绝对路径引用(不带域名的URL)。将使用编码生成的路径中的任何特殊字符iri_to_uri()
。
{% url 'some-url-name' v1 v2 %}
第一个参数是URL模式名称。它可以是带引号的文字或任何其他上下文变量。其他参数是可选的,应该是空格分隔的值,将用作URL中的参数。
或者,您可以使用关键字语法
{% url 'some-url-name' arg1=v1 arg2=v2 %}
verbatim
停止模板引擎呈现此块标记的内容。
常见的用途是允许JavaScript模板层与Django的语法冲突。
{% verbatim %}
{{if dying}}Still alive.{{/if}}
{% endverbatim %}
widthratio
对于创建条形图等,此标记计算给定值与最大值的比率,然后将该比率应用于常量。
<img src="bar.png" alt="Bar"
height="10" width="{% widthratio this_value max_value max_width %}" />
在某些情况下,您可能希望捕获widthratio
变量的结果。例如,它可以是blocktrans
这样的:
{% widthratio this_value max_value max_width as width %}
{% blocktrans %}The width is: {{ width }}{% endblocktrans %}
with
以更简单的名称缓存复杂变量。这在多次访问“昂贵”方法(例如,访问数据库的方法)时很有用。
{% with total=business.employees.count %}
{{ total }} employee{{ total|pluralize }}
{% endwith %}
可分配多个变量
内置过滤器参考
过滤器 | 含义 | 栗子 | 结果 | |
---|---|---|---|---|
add | 将参数添加到值 | {{ value|add:"2" }} | value+2的值 | |
addslashes | 在引号前添加斜杠 | I'm | I\'m | |
capfirst | 将值的第一个字符大写。如果第一个字符不是字母,则此过滤器无效。 | {{ value|capfirst }} | v->V | |
center | 将值置于给定宽度的字段中 | {{ value|center:"5" }} | " 1 " | |
cut | 从给定的字符串中删除arg的所有值 | {{ value|cut:" " }} | 删除value的空格 | |
default | value的计算结果为False,则使用给定的默认值。否则,使用该值 | {{ value|default:"nothing" }} | 空字符串也是False | |
default_if_none | 如果(且仅当)值为None,则使用给定的默认值。否则,使用该值。 | {{ value|default_if_none:"nothing" }} | value是None,输出将是nothing。 | |
dictsort | 获取字典列表并返回按参数中给出的键排序的列表 | {{ value|dictsort:"name" }} | 根据name排序并返回(也可以根据索引排序) | |
dictsortreversed | 返回反序 | 与上面用法一致 | 列表反序 | |
divisibleby | 如果值可以被参数整除,返回True | {{ value\divisibleby:"3" }} | value=21输出True | |
escape | 转义字符串的HTML | {% autoescape off %} {{ title|escape }}{% endautoescape %} | 转义 | |
escapejs | 转义用于JavaScript字符串的字符 | {{ value|escapejs }} | w | |
filesizeformat | 格式,如一个“人类可读”的文件大小的值 | {{ value|filesizeformat }} | 123456789=117.7 MB | |
first | 返回列表中的第一个项目 | {{ value|first }} | ['1','2']=1 | |
floatformat | 浮点数格式化 | |||
force_escape | 将HTML转义应用于字符串 | -- | -- | |
get_digit | 给定一个整数,返回请求的数字,其中1是最右边的数字,2是第二个最右边的数字,等等。返回无效输入的原始值 | {{ value|get_digit:"2" }} | 1234->3 | |
iriencode | 将IRI(国际化资源标识符)转换为适合包含在URL中的字符串。 | |||
join | 使用字符串连接列表 | {{ value|join:" // " }} | [1,2,3]--123 | |
last | 返回列表中的最后一项 | {{ value|last }} | [1,2,3]--3 | |
length | 列表长度 | {{ value|length }} | [1,2,3]----3 | |
length_is | 判断长度 | {{ value|length_is:"4" }} | 返回True or False | |
linebreaks | 换行 | {{ value|linebreaks }} | \n--> |
|
linebreaksbr | 所有换行z转行 | {{ value|linebreaksbr }} | 参照上一个 | |
linenumbers | 显示带行号的文本 | {{ value|linenumbers }} | 1.a 2.b | |
ljust | 左对齐给定宽度的字段中的值 | {{ value|ljust:"10" }} | "djano(补空格)" | |
lower | 将字符串转换为全部小写 | {{ value|lower }} | T---t | |
make_list | 返回变为列表的值 | 整数强转字符 | 213---['2','1','3'] | |
phone2numeric | 电话号码(字母)转换其等效数字 | 800-COLLECT | 800-2655328 | |
pluralize | 如果值不是1,则返回复数后缀 | 加's' | 可以指定复数后缀 | |
pprint | 一个包装pprint.pprint() - 用于调试 |
-- | ||
random | 返回给定列表中的随机项 | {{ value|random }} | 随机 | |
rjust | 右对齐 | 类比左对齐 | ||
safe | 字符串标记为在输出之前不需要进一步的HTML转义。当自动关闭时,此过滤器无效 | {{ var|safe|escape }} | 源码打印 | |
slice | 返回列表的切片 | {{ some_list | slice:":2" }} | 同python |
slugify | 转换为ASCII。将空格转换为连字符。删除不是字母数字,下划线或连字符的字符。转换为小写。还剥去前导和尾随空格 | {{ value|slugify } | 参考slug | |
stringformat | 格式化字符串输出 | {{ value|stringformat:"E" }} | 1.0E+01 | |
striptags | 尽一切努力去除所有[X] HTML标记 | {{ value|striptags }} | 不保证 | |
time | 根据给定的格式格式化时间 | {{ value|time:"H:i" }} | eoTzHi | |
title | 字符串大写开头 | {{ value|title }} | ||
truncatechars | 字符串截断 | {{ value|truncatechars:9 }} | qweyuyiyq...... | |
truncatechars_html | 同上 | 保留换行符 | 右标签 | |
truncatewords | 按单词个数截断 | 。。。 | ||
truncatewords_html | 同上 | |||
unordered_list | 归地获取自嵌套列表并返回HTML无序列表 - 没有打开和关闭<ul>标记。 | 这个牛!!! | ||
upper | 全部大写 | |||
urlencode | 转义值以在URL中使用 | |||
urlize | 将文本中的URL和电子邮件地址转换为可单击的链接 | |||
urlizetrunc | 同上 | 但会截断 | ||
wordcount | 单词数 | |||
wordwrap | 在指定的行长度处包装单词 | 没排字符数 |
(add)
此过滤器将首先尝试将两个值强制转换为整数。如果失败,它将尝试将值加在一起。这将适用于某些数据类型(字符串,列表等),而对其他数据类型则失败。如果失败,结果将为空字符串。
(escape)
< 转换为 <
> 转换为 >
' (单引号)转换为 '
" (双引号)转换为 "
& 转换为 &
(linebreaks)
用适当的HTML替换纯文本中的换行符; 单个换行符成为HTML换行符(),后面跟空行的换行符成为段落符号()。<br /></p>