Django模板标签

Django模板标签

Django Web框架提供了几十个标签,用于在模板中实现任意的逻辑。标签看起来像这样。{%标签%}.标签比变量更复杂。一些标签在输出中创建文本,一些标签通过执行循环或逻辑来控制流程,还有一些标签将外部信息加载到模板中,供后来的变量使用。标签在渲染过程中提供任意的逻辑。例如,一个标签可以输出内容,作为一个控制结构,例如一个 “if “语句或 “for “循环,从数据库中抓取内容,甚至可以访问其他模板标签。

语法
{% tag_name %}
示例

标签被{%和%}所包围,像这样。

{% csrf_token %}

大多数标签都接受参数,例如::

{% cycle 'odd' 'even' %}

Django模板中常用的标签

1. comment

模板忽略了{% comment %}和{% endcomment %}之间的所有内容。在第一个标签中可以插入一个可选的注释。例如,这在注释代码时很有用,可以记录代码被禁用的原因。
示例

    {% comment "Optional note" %}

    Commented out text with {{ create_date|date:"c" }}


    {% endcomment %}

要查看更多关于评论标签的信息,请访问 – 评论 – Django模板标签

  1. 循环

每次遇到这个标签时,它都会产生一个参数。第一次遇到时产生第一个参数,第二次遇到时产生第二个参数,以此类推。一旦所有参数用完,标签会循环到第一个参数并再次产生。
示例
这个标签在循环中特别有用。

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

第一次迭代产生的HTML指向类row1,第二次指向row2,第三次再次指向row1,以此类推,循环的每一次迭代都是如此。
要查看更多关于循环标签的信息,请访问 – 循环 – Django模板标签

  1. extends

extends标签是用来继承django中的模板的。一个人需要不断地重复相同的代码。使用extends,我们可以继承模板,也可以继承变量。
示例
假设目录结构如下。

     dir1/
template.html
        base2.html
        my/
            base3.html
    base1.html

在template.html中,以下路径是有效的。

    {% extends "./base2.html" %}
    {% extends "../base1.html" %}
    {% extends "./my/base3.html" %}

要查看更多关于extends标签的信息,请访问 – extends – Django模板标签

4.if

{% 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 %}

在上面,如果athlete_list不是空的,运动员的数量将由{{ athlete_list|length }}变量显示。

正如人们所看到的,if标签可以接受一个或几个{% elif %}子句,以及一个{% else %}子句,如果前面所有的条件都失败,就会显示出来。这些子句是可选的。

要查看更多关于if标签的信息,请访问 – if – Django模板标签

5.for loop

for标签在一个数组中的每个项目上循环,使该项目在一个上下文变量中可用。
示例
例如,要显示 athlete_list 中提供的运动员名单。

     <ul>
{% for athlete in athlete_list %}
        <li>{{ athlete.name }}</li>
    {% endfor %}
    </ul>

想了解更多关于for loop标签的信息,请访问 – for loop – Django模板标签

6.for … 空循环

for标签在一个数组中的每个项目上循环,使该项目在一个上下文变量中可用。for标签可以接受一个可选的{% empty %}子句,如果给定的数组是空的或者找不到,则显示其文本。这基本上被用作检查查询集是否为空的条件,以及在相同情况下要执行的操作。

示例

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

查看更多关于for … empty loop标签,请访问 – for … empty loop – Django模板标签

7.布尔运算符

{% if %}标签会评估一个变量,如果该变量为 “真”(即存在,不为空,也不是一个错误的布尔值),则会输出该块的内容。人们可以用Django If Template标签使用各种布尔运算符。

示例

     <ul> 
{% if variable boolean_operator value %}
    // statements
    {% endif %}
    </ul> 

想了解更多关于布尔运算符的信息,请访问 – 布尔运算符 – Django模板标签

8.firstof

firstof tag 输出第一个非 “false “的参数变量(即存在、非空、非假布尔值、非零数字值)。如果所有传递的变量都是 “false”,则不输出任何结果。

示例

{% firstof var1 var2 var3 %}

这相当于。

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

我们也可以使用一个字面字符串作为后备值,以防所有传递的变量都是False。

{% firstof var1 var2 var3 "fallback value" %}

要查看更多关于firstof标签的信息,请访问 – firstof – Django模板标签

9.include

include标签加载一个模板并以当前的上下文渲染它。这是一种在模板中 “包括 “其他模板的方式。模板名称可以是一个变量,也可以是一个硬编码(带引号)的字符串,用单引号或双引号。

示例

{% include "foo/bar.html" %}

通常,模板名称是相对于模板加载器的根目录而言的。字符串参数也可以是以./或./开头的相对路径,如extends标签中所述。

要查看更多关于include标签的信息,请访问 – include – Django模板标签

10.lorem

lorem标签显示随机的 “lorem ipsum “拉丁文本。这对于在模板中提供样本数据很有用。

示例

  • {% lorem %}将输出常见的 “lorem ipsum “段落。
  • {% lorem 3 p %}将输出常见的 “lorem ipsum “段落和两个随机段落,每个段落都用HTML标签包装。
  • {% lorem 2 w random %}将输出两个随机的拉丁语单词。

要查看更多关于lorem标签的信息,请访问 – lorem – Django模板标签

11.now

现在标签显示当前日期和/或时间,使用符合给定字符串的格式。这种字符串可以包含日期过滤器部分所述的格式指定符。
示例

It is {% now "D d M Y" %}

以上标签将显示, Tue 04 Feb 2020

要查看更多关于now标签的信息,请访问 – now – Django模板标签

12.url

url标签 返回一个与给定视图和可选参数相匹配的绝对路径参考(没有域名的URL)。这是在不违反DRY原则的情况下,在模板中硬编码URL的一种输出链接的方式。
示例

{% url 'some-url-name' v1 v2 %}

第一个参数是一个URL模式名称。它可以是一个带引号的字面意思或任何其他的上下文变量。其他参数是可选的,应该是空格分隔的值,将作为URL中的参数使用。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程