Django Template 内置模板标签和过滤器

内置标签参考指南

注释

要注释模版中一行的部分内容,使用注释语法 {# #}.

{# {% if foo %}bar{% else %} #}

comment(注释)

 

{% comment %}{% endcomment %},之间的内容会被忽略,作为注释。在第一个标签可以插入一个可选的记录。 比如,当要注释掉一些代码时,可以用此来记录代码被注释掉的原因。

 

autoescape 自动转义

默认情况下,Django 中的每个模板会自动转义每个变量的输出。明确地说,下面五个字符被转义:

  • < 会转换为&lt;
  • > 会转换为&gt;
  • '(单引号) 会转换为&#39;
  • " (双引号)会转换为 &quot;
  • & 会转换为 &amp;

我们要再次强调这个行为是默认打开的。如果你使用Django的模板系统,会处于保护之下。

关闭自动转义:

方法1:

This will not be escaped: {{ data|safe }}

方法2:

{% autoescape off %}
    Hello {{ name }}
{% endautoescape %}


cycle(值循环)

每当这个标签被访问,则传出一个它的可迭代参数的元素。第一次访问返回第一个元素,第二次访问返回第二个参数,以此类推.一旦所有的变量都被访问过了,就会回到最开始的地方,重复下去这个标签在循环中特别有用。

示例:给表格单行循环样式

{% for o in some_list %}
    <tr class="{% cycle 'row1' 'row2' %}">
        ...
    </tr>
{% endfor %}

 

firstof

输出第一个不为False参数。如果传入的所有变量都为False,就什么也不输出。

简单用例:{% firstof var1 var2 var3 %}

它等价于:

{% if var1 %}
    {{ var1 }}
{% elif var2 %}
    {{ var2 }}
{% elif var3 %}
    {{ var3 }}
{% endif %}

 当然你也可以用一个默认字符串作为输出以防传入的所有变量都是False:{% firstof var1 var2 var3 "fallback value" %}

 

for

循环组中的每一个项目,并让这些项目在上下文可用。

可以利用{% for obj in list reversed %}反向完成循环。

如果你想访问一个字典中的项目,这个方法同样有用。举个例子:如果你的内容包含一个叫做data的字典,下面的方式可以输出这个字典的键和值:

{% for key, value in data.items %}
    {{ key }}: {{ value }}
{% endfor %}

 for循环设置了一系列在循环中可用的变量:

Variable

 Description
forloop.counter The current iteration of the loop (1-indexed)
forloop.counter0 The current iteration of the loop (0-indexed)
forloop.revcounter The number of iterations from the end of the loop (1-indexed)
forloop.revcounter0 The number of iterations from the end of the loop (0-indexed)
forloop.first True if this is the first time through the loop
forloop.last True if this is the last time through the loop
forloop.parentloop For nested loops, this is the loop surrounding the current one

for ... empty

for 标签带有一个可选的{% empty %} 从句,以便在给出的组是空的或者没有被找到时,可以有所操作。

{% for athlete in athlete_list %}
    <li>{{ athlete.name }}</li>
{% empty %}
    <li>Sorry, no athletes in this list.</li>
{% endfor %}

 

spaceless

删除HTML标签之间的空白格.包括制表符和换行.(仅删除 tags 之间的空格 – 而不是标签和文本之间的。

用法示例:

{% spaceless %}
    <p>
        <a href="foo/">Foo</a>
    </p>
{% endspaceless %}

这个示例将返回下面的HTML:

<p><a href="foo/">Foo</a></p>

 

内置过滤器参考

add

把add后的参数加给value: {{ value|add:"2" }}

 

addslashes

在引号前面加上斜杆。例如,用于在CSV中转义字符串。

示例:{{ value|addslashes }} 如果value"I'm using Django", 输出将变成 "I\'m using Django".

 

capfirst

大写变量的第一个字母。如果第一个字符不是字母,该过滤器将不会生效。

示例:{{ value|capfirst }} 如果 value"django", 输出将变成 "Django".

 

cut

移除value中所有的与给出的变量相同的字符串

例如: {{ value|cut:" " }}

 

date

根据给定格式对一个date变量格式化

示例:{{ value|date:"D d M Y" }}

 

default

如果value的计算结果为False,则使用给定的默认值。否则,使用该value。

示例:{{ value|default:"nothing" }}

 

dictsort

接受一个字典列表,并返回按参数中给出的键排序后的列表。

示例:{{ value|dictsort:"name" }}

如果value为:

[
    {'name': 'zed', 'age': 19},
    {'name': 'amy', 'age': 22},
    {'name': 'joe', 'age': 31},
]

那么输出将是:

[
    {'name': 'amy', 'age': 22},
    {'name': 'joe', 'age': 31},
    {'name': 'zed', 'age': 19},
]

 

dictsortreversed

获取字典列表,并返回按照参数中给出的键按相反顺序排序的列表。这与上面的过滤器完全相同,但返回的值将是相反的顺序。

 

divisibleby

如果value可以被给出的参数整除,则返回 True。

例如:{{ value|divisibleby:"3" }},如果value21,则输出将为True

 

filesizeformat

格式化数值为“人类可读”的文件大小(例如'13 KB', '4.1 MB', '102 bytes'等)。

 

 

first

返回列表中的第一项。

例如:{{ value|first }}

 

floatformat

当不使用参数时,将浮点数舍入到小数点后一位,但前提是要显示小数部分。例如:

value|floatformat

value|floatformat:3

value|floatformat:"0"

 

get_digit

给定一个整数,返回所请求的数字,其中1是最右边的数字,2是第二个最右边的数字等。返回无效输入的原始值(如果输入或参数不是整数,或参数小于1)。否则,输出总是一个整数。

 

join

使用字符串连接列表,例如Python的str.join(list)

例如:{{ value|join:" - " }}

 

last

返回列表中的最后一个项目。

例如:{{ value|last }}

 

length

返回值的长度。这适用于字符串和列表。

 

length_is

如果值的长度是参数,则返回True,否则返回False

例如:{{ value|length_is:"4" }}

 

make_list

返回转换为列表的值。对于字符串,它是一个字符列表。对于整数,在创建列表之前将参数强制转换为unicode字符串。

 

random

返回给定列表中的随机项。

例如:{{ value|random }}

 

slice

返回列表的一部分。

使用与Python的列表切片相同的语法

示例:{{ some_list|slice:":2" }}

 

stringformat

根据参数格式化变量,一个字符串格式化说明符。

示例:{{ value|stringformat:"E" }}  更多参数:https://docs.python.org/3/library/stdtypes.html#string-formatting-operations

 

 

title

 

使字符以大写字符开头,其余字符小写,将字符串转换为titlecase。此标记不会努力保持“小写字”小写。

例如:{{ value|title }}   如果value“my FIRST post”,输出将为“My First Post”

 

 

 

truncatechars

 

如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号序列(“...”)结尾。

 

参数:要截断的字符数

例如:{{ value|truncatechars:9 }}

 

truncatewords

在一定数量的字后截断字符串。

参数:要截断的字数

例如:{{ value|truncatewords:2 }}

 

wordcount

返回字数。

示例:{{ value|wordcount }}

 

wordwrap

以指定的行长度换行单词。

参数:用于换行文本的字符数

例如:{{ value|wordwrap:5 }}

 

timesince

将日期格式设为自该日期起的时间(例如,“4天,6小时”)。

采用一个可选参数,它是一个包含用作比较点的日期的变量(不带参数,比较点为现在)。例如,如果blog_date是表示2006年6月1日午夜的日期实例,并且comment_date是2006年6月1日08:00的日期实例,则以下将返回“8小时”:

示例:{{ blog_date|timesince:comment_date }}

 

 

 

timeuntil

 

类似于timesince,除了它测量从现在开始直到给定日期或日期时间的时间。例如,如果今天是2006年6月1日,而conference_date是保留2006年6月29日的日期实例,则{{ conference_date | timeuntil }}将返回“4周”。

 

posted @ 2017-06-07 19:30  Vincen_shen  阅读(831)  评论(0)    收藏  举报