📜  Django 模板标签

📅  最后修改于: 2022-05-13 01:55:36.672000             🧑  作者: Mango

Django 模板标签

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

句法
{% tag_name %}
例子

标签被 {% 和 %} 包围,如下所示:

{% csrf_token %}

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

{% cycle 'odd' 'even' %}

Django模板中常用的标签

  1. 评论

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

    {% comment "Optional note" %}
        
    Commented out text with {{ create_date|date:"c" }}
    
    
    {% endcomment %}
    

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

  2. 循环

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

    {% for o in some_list %} 
         
            ... 
         
    {% endfor %} 
    

    第一次迭代生成引用类 row1 的 HTML,第二次生成引用 row2 的 HTML,第三次生成引用 row1 的 HTML,以此类推循环的每次迭代。
    要查看有关循环标签的更多信息,请访问 -cycle - Django 模板标签

  3. 延伸

    extends 标签用于继承 django 中的模板。需要一次又一次地重复相同的代码。使用扩展我们可以继承模板和变量。
    例子
    假设以下目录结构:

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

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

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

    要查看有关扩展标签的更多信息,请访问 – 扩展 – Django 模板标签

  4. 如果

    {% 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|length }}变量显示。

    可以看到,if 标记可能带有一个或多个{% elif %}子句,以及一个{% else %}子句,如果前面的所有条件都失败,则会显示该子句。这些条款是可选的。

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

  5. for 循环

    for 标记循环遍历数组中的每个项目,使该项目在上下文变量中可用。
    例子
    例如,要显示运动员列表中提供的运动员列表:

      {% for athlete in athlete_list %}     
    • {{ athlete.name }}
    • {% endfor %}

    要查看有关 for 循环标签的更多信息,请访问 - for loop - Django 模板标签

  6. for … 空循环

    for 标记循环遍历数组中的每个项目,使该项目在上下文变量中可用。 for 标记可以采用可选的{% empty %}子句,如果给定数组为空或找不到,则显示其文本。这基本上用作检查查询集是否为空以及在同一场景中执行什么操作的条件。

    例子

        {% if athlete_list %}      {% for athlete in athlete_list %}      
    • {{ athlete.name }}
    •       {% endfor %}  {% else %}      
    • Sorry, no athletes in this list.
    •   {% endif %} 
     

    要查看更多关于 for … empty loop 标签的信息,请访问 – for … empty loop – Django Template Tags

  7. 布尔运算符

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

    例子

        {% if variable boolean_operator value %} // statements {% endif %}
     

    要查看有关布尔运算符的更多信息,请访问 – 布尔运算符 – Django 模板标签

  8. 首先

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

    例子

    {% 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 "foo/bar.html" %}

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

    要查看有关包含标签的更多信息,请访问 – 包含 – Django 模板标签

  10. 洛雷姆

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

    以上标签将显示,2020 年 2 月 4 日星期二

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

  12. 网址

    url 标记返回与给定视图和可选参数匹配的绝对路径引用(没有域名的 URL)。这是一种在不违反 DRY 原则的情况下输出链接的方法,因为它必须在模板中对 URL 进行硬编码。
    例子

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

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

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