zoukankan      html  css  js  c++  java
  • Django模板系统-标签Tags

    for

     <ul>
     {% for user in user_list %}
        <li>{{ user.name }}</li>
     {% endfor %}
     </ul>

    【参数】

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

    for ... empty

    如果for循环的参数-列表为空,将执行empty里面的内容

     <ul>
     {% for user in user_list %}
        <li>{{ user.name }}</li>
     {% empty %}
        <li>空空如也</li>
     {% endfor %}
     </ul>

    if,elif和else

     {% if user_list %}
      满足条件一:{{ user_list|length }}
     {% elif black_list %}
      满足条件而:{{ black_list|length }}
     {% else %}
      剩下的所有
     {% endif %}

    【注意】

    • 支持 and or not,且and和or可以联用。但and的优先级高于or

    • if标签中不允许使用 () ,可以依靠嵌套if来实现

    • if标签中的条件判断语句有 == , != , > , < , >= , <= , in , not in , is , not is 。 is和not is是django1.10中的新特性。

    • 不支持连续判断

    • if标签中可以使用过滤器

    • if标签衍生出了ifequal和ifnotequal,{% ifequal a b %} 等于 {% if a==b %}

    ifchange

    检查循环中的某个值在最近一次循环时是否改变。可以使用 else 标签。用法有两个:

    • 它会把要渲染的内容与前一次作比较,发生变化时才显示它。

    • 如果给的是一个或者多个变量,就会检查其中任一个变量是否发生改变。

    with

    定义一个中间变量,用更简单的变量名代替复杂的变量名

    {% with total=business.employees.count %}
        {{ total }} employee{{ total|pluralize }}
     {% endwith %}

    csrf_token

    跨站请求伪造保护,可以在页面的form表单里面写上{% csrf_token %;django为用户实现防止跨站请求伪造的功能,在全局模式下通过中间件 django.middleware.csrf.CsrfViewMiddleware 来完成; ​ 还可以使用局部方式进行限制:@csrf_protect,为当前函数强制设置防跨站请求伪造功能,即便settings中没有设置全局中间件;与之对应的@csrf_exempt,取消当前函数防跨站请求伪造功能,即便settings中设置了全局中间件。使用局部模式时需要导入from django.views.decorators.csrf import csrf_exempt,csrf_protect

    原理

    当用post提交数据的时候,django会去检查是否有一个csrf的随机字符串,如果没有就会报错,这也是之前我们一直将中间件注释的原因

    forbidden

    给from表单添加{%csrf_token%}
     <form action="" method="post">
        {% csrf_token %}
        <input type="text" name="name">
        <button>提交</button>
     </form>

    执行后效果:

    widthratio

    计算给定值与最大值的比率,然后将该比率当作一个常量进行操作

     模板
     {% widthratio this_value max_value max_width as width %}
     ​
     可以用来进行乘除运算
     # 乘法
     {% widthratio 5 1 100 %}   # 5/1*100 = 500
     # 除法
     {% widthratio 6 2 1 %}   # 6/2*1
  • 相关阅读:
    EntityFramework 启用迁移 EnableMigrations 报异常 "No context type was found in the assembly"
    JAVA 访问FTP服务器示例(2)
    NuGet Package Manager 更新错误解决办法
    JAVA 访问FTP服务器示例(1)
    RemoteAttribute 的使用问题
    诡异的 javascript 变量
    javascript apply用法
    Babun 中文乱码
    GSM呼叫过程
    转站博客园
  • 原文地址:https://www.cnblogs.com/jjzz1234/p/11617291.html
Copyright © 2011-2022 走看看