常用模板标签

发布于 2019-10-25 17:51:25   阅读量 95  点赞 0  

TDL使用标签来向模板中嵌入逻辑

标签的基本样式:{{变量}}{%语句%}

   

① if标签

if标签相当于Python中的if语句,同时也有elifelse标签相对应 ,且每个if标签形成的 if语句需用 {% endif %} 标签结束if标签中if语句可以使用==、|=、in、not、is等关系运算符。

   

② for...in...标签

for...in...标签相对于Python中的for...in...语句。可以遍历可迭代对象。若需要反向遍历,则在标签中for...in...语句的结尾加上reversed语句。且每个for标签的语句块需用{%endfor%}标签结束

注意循环标签中都无break、continue关键字

示例代码:

{% for i in range( 0,10 ) reversed %}
     <p>i</p>
{% endfor %}
-forloop对象

  在 for 循环中,DTL提供了一个 forloop 对象可供使用:

属性
forloop.counter 当前迭代的次数,从1开始
forloop.counter0 当前迭代的次数,从0开始
forloop.revcounter 从结尾计算迭代的次数
forloop.first 是否为第一次遍历
forloop.last 是否为最后一次遍历
forloop.parentloop 若有多个循环,则该属性为上一级for循环的forloop对象

   

③ for...in...empty 标签

for...in...empty标签的正常使用与for..in..一样,只不过当遍历的对象为空的情况下,会执行empty标签中的内容,同样需要用{% endfor %}标签来结束语句块。

   

④ with 标签

用于给模板中的变量起别名,即将某个名字比较复杂的变量缓存到另一个变量上。则在with语句块中可以通过后者使用前者 同样,需要用{ % endwith % }标签来结束with语句块。 示例:

  {% with var1=var2 %}
            ...
  {% endwith %}

注意事项:

  • 定义变量别名的时候,等号的左右两边不能有空格。

  • 可用关键字as来替代=

  • 定义的别名只能在with语句块中使用。

   

⑤ url 标签

在需要写入url的地方使用,如写入标签中的href特性。虽然可以通过硬编码将url写死,但不利于后续维护;故可使用反转的形式来实现,类似于views.py代码中url的reverse。  

  • 使用:{ % url '应用(实例)命名空间:url别名' % }  
    • 利用url标签来嵌入url的思想与url命名相似,标签中写的也是url的别名,同时也是使用应用命名空间来区别不同应用下的url别名。  
    • 使用的是与views.py代码中reverse()进行反转的url别名是同一个

回顾:url的别名在path( )re_path()函数中指定。

 

url 标签传参
  • 需注意写入模板的url若要传参,则其参数都是写死的,每个url都只能跳向相同的页面即不能像在浏览器窗口那样根据输入来决定参数,从而跳向不同的页面。  

①正常传参:  若在使用 url 标签的时候需要传入参数,则在'应用命名空间:url别名'字符串的后面传递,且不同参数间使用的是空白符进行分隔,而不是使用逗号。与python中传参不相同

  • 可以使用位置参数关键字参数,但是两种参数模式之间不能混用。

示例代码:

# 使用url反转(应用命名空间与url别名)与位置参数
<a href="{ % url 'book : detail' 1 % }">图书详情页</a>

# 使用url反转(应用命名空间与url别名)与关键字参数
<a href="{ % url 'book : detail' book_id=1 % }">图书详情页</a>

  ②查询字符串:  若在使用url标签的时候要传递查询字符串的参数,则必须手动在后面添加。

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

 

⑥ spaceless 标签

  移除标签中html标签与标签之间的空白符,同样需要搭配{% endspace %},实例:

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

则在渲染完成后,会变成:

<p><a href="#"></a></p>

spaceless 标签只会移除html标签之间的空白字符,而不会移除标签内文本的空白字符。

 

⑦ autoescape 标签

  开启与关闭html标签的自动转义,而模板中是默认开启自动转义的。  

  • 使用:在标签中 autoescape 后面加上 on 或者 off 表示开启或关闭自动转义,且同样需要使用{ % endautoescape % }标签结束转义。

自动转义:   如字符转义为html语法能识别的字符,如<会被转义成&lt;而 > 会被转义成&gt   例:html会将 <a href="www.baidu.com">百度</a> 自动转义转义为跳向百度的超链接,若使用autoescape标签关闭自动转义,则会直接在网页中显示文本内容:百度

 

⑧ verbatim 标签

  关闭DTL模板中的转义;DTL模板会解析特殊的字符,如 {%{{ 等,使用verbatim标签可以关闭DTL引擎的解析,直接将DTL模板内容显示出来。  

  • 使用:无需使用 on/off 来说明;结束时同样需要使用 {% endverbatim %} 标签。  


Last Modified : 2020-03-09 17:51:25