• 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%} ,因为块标签同时在两个地方工作,不仅仅在子模板中,而且在父模板中也填充内容,如果子模板有两个同名的标签,父模板将不能决定使用哪个块内容来使用
  • 相关阅读:
    MIUI6&7桌面角标开源代码简介
    竞品技术三瞥安装包的大小
    java synchronized详解
    挖掘微信Web版通信的全过程
    ios app的真机调试与发布配置
    Adapter优化方案的探索
    Gradle学习目录总结
    Eclipse混淆文件导入Android Studio Gradle编译报input jar file is specified twice
    Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)
    对于android拦截短信的一些疑问
  • 原文地址:https://www.cnblogs.com/richiewlq/p/7721862.html
Copyright © 2020-2023  润新知