{% ifequal n1 n2 %}
...代码块1
{% else %}
...代码块2
{% endifequal %}
In [1]: from django.template import Template,Context In [2]: t=Template(""" ...: {% ifequal n1 n2 %} ...: <p>{{ n1 }} equal {{ n2 }}</p> ...: {% else %} ...: <p>{{ n1 }} not equal {{ n2 }} </p> ...: {% endifequal %} ...: """) ...: t.render(Context({'n1':'python','n2':'python'})) Out[3]: '<p>python equal python</p>'此处的 n1与 n2 的值属于模板变量,如使用硬编码时也可以是整数、小数或者字符串,如下所示
{% ifequal variable 1 %}
{% ifequal variable 1.23 %}
{% ifequal variable "bar" %}
{% ifequal variable True %}
{% ifequal variable [1, 2, 3] %}
{% ifequal variable {'key': 'value'} %}
{% load static %} 加载静态文件
In [1]: t=Template(""" ...: {% for name in webnames %} ...: {% ifchanged %} ...: {{name.1|add:'ioe'}} ...: {% endifchanged %} ...: {% endfor %} ...: """) ...: t.render(Context({'webnames':[['Python','Flask'],'java','c语言']})) Out[1]: '\n\n Flaskioe\n aioe\n 语ioe \n\n'通过输出结果可以看出, ifchanged 标签将更改后的值进行了显示,而其余未更改的部分则没有进行输出。add 为模板的过滤器,这里表示给 name 的相对应变量值进行了字符串拼接的操作。
#cycle的参数为字符串,用引号引起来 In [17]: t=Template(""" ...: {% for i in some_list %} ...: <tr class="{% cycle 'row1' 'row2' %}"> ...: <p>{{ i }}</p> ...: </tr>^M ...: {% endfor %} ...: """) ...: t.render(Context({'some_list':['Python','Flask']})) Out[17]: '\n\n<tr class="row1">\n<p>Python</p></tr> <tr class="row2">\n<p>Flask</p></tr>\n\n' #cycle参数为变量,需要用字典为其赋值 In [18]: t=Template(""" ...: {% for i in some_list %} ...: <tr class="{% cycle rowvalue1 rowvalue2 %}"> ...: <p>{{ i }}</p> ...: </tr> ...: {% endfor %} ...: """) ...: t.render(Context({'some_list':['Python','Flask'],'rowvalue1':'row1','rowvalue2':'row2'})) Out[18]: '\n\n<tr class="row1">\n<p>Python</p>\n</tr> <tr class="row2">\n<p>Flask</p>\n</tr>\n\n'字符串和变量也可以在 cycle 标签中混合使用,我们就不加赘述。在某些情况下,你可能只希望引用循环的当前值而不包含下一个值。为此,只需使用“ as”为标签起个别名即可,格式如下所示:
{% cycle 'row1' 'row2' as rowcolors %}
当需要在模板中插入被引用的当前值的时候,我们可以通过别名来引用,将其作为上下文的变量。如下所示:<tr> <td class="{% cycle 'row1' 'row2' as rowcolors %}">...</td> <td class="{{ rowcolors }}">...</td> </tr> <tr> <td class="{% cycle rowcolors %}">...</td> <td class="{{ rowcolors }}">...</td> </tr>cycle 标签也可与 resetcycle 标签配合使用,resetcycle 表示重置上一个循环,遇到此标签时,将从 cycle 标签的第一个参数重新开始, cycle 还提供了关键字 silent,正如它英语含义一样,它表示不输入参数值,只显示循环周期的内容,即不会给 class 属性赋值。实例如下所示:
In [20]: t=Template(""" ...: {% for o in some_list %} ...: <tr class="{% cycle rowvalue1 rowvalue2 as rowcolor silent %}"> ...: <p>{{ o }}</p> ...: </tr> ...: {% endfor %} ...: """) ...: t.render(Context({'some_list':['Python','Flask'],'rowvalue1':'row1','rowvalue':'row2'},autoescape=False )) Out[20]: '\n\n <tr class="">\n<p>Python</p>\n</tr> <tr class="">\n <p>Flask</p>\n </tr>\n\n'
{# #}
的格式,示例如下:{# This is a comment #}
注释的内容不会在模板渲染时输出,但是在很多情况下,由于要注释的内容非常多并且需要跨行,比如要增加代码逻辑描述等,这时使用这方式就不是很方便。为了解决上述问题,Django 提供了 comment 标签,用来快速实现多行注释,使用方法如下:
{% comment %}
...要被注释的内容放在两个标签中间
{% endcomment %}
提示:使用国际化标签,需要更改 setting.py 配置文件,根据上述要求进行相应更改即可。
Django 官网提供了所有内置标签以及第三方标签库的使用方法,如果大家感兴趣可以参见如下网址:https://docs.djangoproject.com/en/2.2/ref/templates/builtins/,虽然有些标签不经常使用,但是可以作为知识拓展进行了解。本文链接:http://task.lmcjl.com/news/17984.html