Django模板语言-Tags

Posted wtil

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django模板语言-Tags相关的知识,希望对你有一定的参考价值。

Tags

  1. Tags
    # 普通for循环
    
    <ul>
    {% for user in user_list %}
        <li>{{ user.name }}</li>
    {% endfor %}
    </ul>

    for循环可用的一些参数:

    VariableDescription
    forloop.counter 当前循环的索引值(从1开始)
    forloop.counter0 当前循环的索引值(从0开始)
    forloop.revcounter 当前循环的倒序索引值(从1开始)
    forloop.revcounter0 当前循环的倒序索引值(从0开始)
    forloop.first 当前循环是不是第一次循环(布尔值)
    forloop.last 当前循环是不是最后一次循环(布尔值)
    forloop.parentloop 本层循环的外层循环

    for ... empty

    # 如果user_list 里面元素为0个的时候执行 empty
    
    <ul>
    {% for user in user_list %}
        <li>{{ user.name }}</li>
    {% empty %}
        <li>空空如也</li>
    {% endfor %}
    </ul>

     

  2. if判断

    # if,elif和else
    
    
    {% if user_list %}
      用户人数:{{ user_list|length }}
    {% elif black_list %}
      黑名单数:{{ black_list|length }}
    {% else %}
      没有用户
    {% endif %}
    # 当然也可以只有if和else
    
    {% if user_list|length > 5 %}
      七座豪华SUV
    {% else %}
        黄包车
    {% endif %}
    
    # if语句支持 and 、or、==、>、<、!=、<=、>=、in、not in、is、is not判断。

     

  3. with

    # 定义一个中间变量,多用于给一个复杂的变量起别名。
    
    # 注意等号左右不要加空格。
    
    {% with total=business.employees.count %}
        {{ total }} employee{{ total|pluralize }}
    {% endwith %}
    
    #
    
    {% with business.employees.count as total %}
        {{ total }} employee{{ total|pluralize }}
    {% endwith %}

     

  4. csrf_token

    这个标签用于跨站请求伪造保护。

    在页面的form表单里面写上{% csrf_token %}

  5. 注意事项

    1. Django的模板语言不支持连续判断,即不支持以下写法:
      {% if a > b > c %}
      ...
      {% endif %}

       

    2. Django的模板语言中属性的优先级大于方法
      def xx(request):
          d = {"a": 1, "b": 2, "c": 3, "items": "100"}
          return render(request, "xx.html", {"data": d})

      如上,我们在使用render方法渲染一个页面的时候,传的字典d有一个key是items并且还有默认的 d.items() 方法,此时在模板语言中:

      {{ data.items }}

      默认会取d的items key的值。

以上是关于Django模板语言-Tags的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 片段在 Django 模板中不起作用

Python大神 - Django(深层学习)-- 模板语言

Django模板语言-Tags

VSCode自定义代码片段——.vue文件的模板

如何在扩展另一个文件的 django 模板中使用带有动态内容的 html 块片段?

Django的模板系统