常用模板标签

匿名 (未验证) 提交于 2019-12-02 23:52:01

7.常用模板标签

常用模板标签

1.if语句

1.所有的标签都是在{%%}之间
2.if标签you闭合标签.就是{% endif %}.
3.if标签的判断运算符,就跟python中的判断运算符是一样的.==、!=、<、<=、>、>=、in、not in、is、is not等判断运算符
4.还可以使用elifelse

2.for...in...标签:

for...in...类似于Python中的for...in...。可以遍历列表、元组、字符串、字典等一切可以遍历的对象。示例代码如下:

{% for person in persons %} <p>{{ person.name }}</p> {% endfor %} 

如果想要反向遍历,那么在遍历的时候就加上一个reversed。示例代码如下:

{% for person in persons reversed %} <p>{{ person.name }}</p> {% endfor %} 

遍历字典的时候,需要使用itemskeysvalues等方法。在DTL中,执行一个方法不能使用圆括号的形式。遍历字典示例代码如下:

{% for key,value in person.items %} <p>key:{{ key }}</p> <p>value:{{ value }}</p> {% endfor %} 

for循环中,DTL提供了一些变量可供使用。这些变量如下:

  • forloop.counter:当前循环的下标。以1作为起始值。
  • forloop.counter0:当前循环的下标。以0作为起始值。
  • forloop.revcounter:当前循环的反向下标值。比如列表有5个元素,那么第一次遍历这个属性是等于5,第二次是4,以此类推。并且是以1作为最后一个元素的下标。
  • forloop.revcounter0:类似于forloop.revcounter。不同的是最后一个元素的下标是从0开始。
  • forloop.first:是否是第一次遍历。
  • forloop.last:是否是最后一次遍历。
  • forloop.parentloop:如果有多个循环嵌套,那么这个属性代表的是上一级的for循环。

模板中的for…in…没有continue和break语句,这一点和Python中有很大的不同,一定要记清楚!

3.for...in...empty标签:

这个标签使用跟for...in...是一样的,只不过是在遍历的对象如果没有元素的情况下,会执行empty中的内容。示例代码如下:

{% for person in persons %} <li>{{ person }}</li> {% empty %} 暂时还没有任何人 {% endfor %} 

4.with标签:

1.在模板中,想要定义变量,可以通过with语句来实现.
2.with语句有两种使用方式,第一种是with xxx=xxx的形式,第二种是with xx as xx
的形式.
3.定义的变量只能在with语句块中使用,在with语句块使用是取不到这个变量的
示例代码如下:

    {% with zs=persons.0%}         <p>{{ zs }}</p>         <p>{{ zs }}</p>     {% endwith %}     下面这个因为超过了with语句块,因此不能使用     <p>{{ zs }}</p>      {% with persons.0 as zs %}         <p>{{ zs }}</p>     {% endwith %} 

5.url标签笔记:

url标签:在模版中,我们经常要写一些url,比如某个a标签中需要定义href属性。当然如果通过硬编码的方式直接将这个url写死在里面也是可以的。但是这样对于以后项目维护可能不是一件好事。因此建议使用这种反转的方式来实现,类似于django中的reverse一样。示例代码如下:

<a href="{% url 'book:list' %}">图书列表页面</a> 

如果url反转的时候需要传递参数,那么可以在后面传递。但是参数分位置参数和关键字参数。位置参数和关键字参数不能同时使用。示例代码如下:

# path部分 path('detail/<book_id>/',views.book_detail,name='detail')  # url反转,使用位置参数 <a href="{% url 'book:detail' 1 %}">图书详情页面</a>  # url反转,使用关键字参数 <a href="{% url 'book:detail' book_id=1 %}">图书详情页面</a> 

如果想要在使用url标签反转的时候要传递查询字符串的参数,那么必须要手动在在后面添加。示例代码如下:

<a href="{% url 'book:detail' book_id=1 %}?page=1">图书详情页面</a> 

如果需要传递多个参数,那么通过空格的方式进行分隔。示例代码如下:

<a href="{% url 'book:detail' book_id=1 page=2 %}">图书详情页面</a> 

6.autoescape自动转义

  1. DTL中默认已经开启了自动转义,会将那些特殊字符进行转义.比如会将<转义成&lt;等.
  2. 如果你不知道自己在干什么,那么最好是使用DTL的自动转义.这样网站才不容易出现XSS漏洞.
  3. 如果变量确实是可信任的,那么可以使用autoescape标签来关掉自动转义.示例代码如下:
        {% autoescape off %}         {% info %}     {% endautoescape%} 

7.verbatim标签

verbatim标签:默认在DTL模板中是会去解析那些特殊字符的.比如{{,{%%}等.如果你在某个代码片段中不想使用DTL的解析引擎,那么你可以把这个代码片段放在verbatim标签中.示例代码如下:

{% verbatim %}     {{ hello }} {% endverbatim %} 
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!