zoukankan      html  css  js  c++  java
  • Django-常用模板标签及过滤器

    常用模板标签及过滤器

    标签和过滤器完整介绍 https://docs.djangoproject.com/en/1.11/ref/templates/builtins/

    模板的组成

    HTML代码+ 逻辑控制代码

    逻辑控制代码的组成

    1. 变量(使用双大括号来引用变量)
        {{ var_name}}
    2. 标签(tag)的使用(使用大括号和百分号的组成来表示使用tag)
        {{% load staticfiles%}}
    3. 过滤器(filter)的使用
        {{ship_date|date:"F j, Y"}},ship_date变量传递给data过滤器,data过滤器通过使用"F j,Y"这几个参数来格式化日期数据。"|"带包类似Unix命令中的管道作用
    

    常用标签(tag)

    1. ** {% if %}**的使用

      可以使用and、 or、not来组织你的逻辑。但不允许and和ir同事出现的条件语句中。新版本中支持{% elif%}这样的语法

    2. {% ifequal %}和{% ifnotequal %}的使用

      比较是否相等,只限于简单的类型,比如字符串、整数、小数的比较。列表、字典、元祖不支持

    3. {% for %}的使用

      用来循环一个lsit、还可以使用resersed关键字来进行倒序遍历,一般可以用if语句来判断一个列表是否为空、在进行遍历;还可以使用empty关键字来进行为空时候的跳转。

      for标签中间可以使用forloop

      reversed

      • forloop.counter 当前循环技术 从1开始
      • forloop.counter0当前循环计数 从0开始,标准索引方式
      • forloop.revcounter 当前循环的倒数计数,从列表长度开始
      • forloop.revcounter0 当前循环的倒数计数,从列表长度减一开始,标准索引方式
      • forloop.first.bool值,判断是不是循环的第一个元素
      • forloop.last.bool值,判断是不是循环的最后一个元素
      • forloop.parentloop 用在嵌套循环中,得到parent循环的引用,然后可以用一闪给的参数
    4. {% cycle%} 在循环是沦落使用给定的字符串列表中的值

    5. {##}单行注释,{% comment%} 多行注释
    6. {% csrf_token %} 生成csrf_token的标签用于防止跨网站攻击验证
    7. {% debug %} 调用调试信息
    8. {% filter %} 将filter标签圈定的内容执行过滤操作
    9. {% autoescape %} 自动转义设置
    10. {% firstof%} 输出第一个值不等于False的变量
    11. {%load%} 加载标签库
    12. {%now%} 获取当前时间
    13. {%spaceless%} 移除空格
    14. {%url%} 引入路由设置的地址
    15. {% varbatim%} 禁止render 禁止渲染
    16. {% with%} 用于简单的变量缓存负责的变量名

    常用过滤器(filter)

    1. add 给变量加上相应的值
    2. addslashes 给变量找那个引号前加上斜线
    3. capfirst 首字母大写
    4. cut 从字符串中移除指定字符
    5. date 格式化日期字符串
    6. default 如果是False 就替换为设置的默认值,否则就使用本来的值
    7. default_if_none 如果值为None 就替换为默认值,否则就是用本来的值
    8. dicsort 按照设定参数(key)对应的value对列表进行排序
    9. dictsortreversed 和上面恰好相反
    10. divisibleby 10/24/2017 10:28:59 AM 10/24/2017 10:29:00 AM 是否能够被某个数字整除,是的化返回True 否则返回False
    11. ** escape** 对字符串进行转义
    12. escapejs 替换value中某些字符,以适应JAVASCRIPT和JSON 格式 13.** filesizeformat** 格式化文件大小显示
    13. first 返回列表中的第一个值
    14. last 返回列表中最后一个值
    15. floatformat 格式化浮点数
    16. length 求子符串货列表的长度
    17. length_is 比较字符串或列表的长度
    18. urlencode 对URL进行编码处理
    19. upperlower
    20. safe 对某个变量关闭自动转义
    21. slice 切片操作
    22. time 格式化时间
    23. timesince 格式化时间(e.g.,"4day,6hours").
    24. truncatechars 按照字符截取字符串
    25. truncatewords 按照单词截取字符串
    26. striptags 过程掉html标签

    官方文档: https://docs.djangoproject.com/en/1.11/ref/templates/builtins/

    自定义标签、过滤器、引用jinja2模板系统

    模板包含和继承

    包含:

    {% include %} 允许在模板中包含其他模板的内容

    标签的参数可以是:模板名称、变量、字符串。

    • . {% include 'nav.html' %}
    • . {% include 'app/nav.html' %}
    • . {% include 'template_name' %}

    还可以在包含的时候传递变量。 https://docs.djangoproject.com/en/1.11/ref/templates/builtins/#incluede

    继承:

    本质上说:模板继承就是先构造一个基础框架模板,而后在其字模板中对他所包含站点公用部分和定义进行重载

    {%block%}

    定义块:https://docs.djangoproject.com/en/1.11/ref/templates/builtins/#block

    {%extends%}

    继承父模板 https://docs.djangoproject.com/en/1.11/ref/templates/builtins/#extends

    案例:

    参见官方例子

    注意事项:

    1. 包含和继承可以把一些共用的网页模块独立出来,以减少代码的冗余。
    2. 如果在模板里使用{% extends%}的话,这个标签必须在所有模板标签的最前面,否则模板继承不工作
    3. 通常尽可能模板里的{%block%} 越多越好,子模板不必定义所有的父block
    4. 如果你需要得到父模板的块内容,{{block.super}} 变量可以帮你完成工作,当你需要给父块添加内容而不是取代他的时候这就很有用
    5. 不能在统一模板里定义多个同名的{%block%} ,因为块标签同时在两个地方工作,不仅仅在子模板中,而且在父模板中也填充内容,如果子模板有两个同名的标签,父模板将不能决定使用哪个块内容来使用
  • 相关阅读:
    Sum Root to Leaf Numbers
    Sum Root to Leaf Numbers
    Sort Colors
    Partition List
    Binary Tree Inorder Traversal
    Binary Tree Postorder Traversal
    Remove Duplicates from Sorted List II
    Remove Duplicates from Sorted List
    Search a 2D Matrix
    leetcode221
  • 原文地址:https://www.cnblogs.com/richiewlq/p/7721862.html
Copyright © 2011-2022 走看看