• Django模板系统


     在Django的模板语言中 只需要记两种特殊符号 :

    •   和变量相关的用 {{  }}
    •        和逻辑相关的用 {%    %}

    常用的语句有如下这些

     1 for循环:
     2 {% for i list %}
     3 {{ forloop.counter }}    : 当前循环的次数
     4 {{ forloop.last }}           : 循环的最后一次
     5 {{ i }}
     6 {% endfor %}
    7 if判断: 8 {% if a>b %} 9 ... 10 {% else %} 11 ... 12 {% endif %}
    13 if....in判断: 14 {% if a in list %} 15 ... 16 {% endif %} 17 {# 取列表中的第一个参数 #} 18 {{ list.0 }} 19 {# 取字典中key的值 #} 20 {{ dic.name }} 21 {# 取对象的name属性 #} 22 {{ obj.name }} 23 {# .操作只能调用不带参数的方法 #} 24 {{ obj.dream }}

    filters

    有时候我们从后端取到的数据并不是我们可以直接使用的   这时我们就需要用到  filter 可以帮我们做一些过滤的操作

     语法是这样的   {{ value|filter_name:参数 }}  value哪里填写我们需要用来过滤的数据  中间用 | 分开  

    注意  : 前后不能有空格  

    接下来我们来看下Django为我们提供了哪些   filter_name

     1 如果一个变量是false或者为空,使用给定的默认值。 否则,使用变量的值。
     2 {{ value|default:"nothing"}}
     3 
     4 返回值的长度,作用于字符串和列表。
     5 {{ value|length }}
     6 
     7 将值格式化为一个 “人类可读的” 文件尺寸 (例如 '13 KB', '4.1 MB', '102 bytes', 等等)
     8 {{ value|filesizeformat }}
     9 
    10 切片 ( 可以切片列表和字符串)
    11 {{value|slice:"2:-1"}}
    12 
    13 格式化时间格式 
    14 {{ value|date:"Y-m-d H:i:s"}}
    15 
    16 告诉django 这个是安全的  不需要转义
    17 例如:value = "<a href='#'>点我</a>"
    18 {{ value|safe}}   就不会把这个标签直接显示   会作为标签的形式显示
    19 
    20 在一定数量的字后截断字符串,这里的数量是按照英文来计算的
    21 {{ value|truncatewords:9}}
    22 
    23 移除value中所有的与给出的变量相同的字符串
    24 {{ value|cut:' ' }}
    25 如果value为'i love you',那么将输出'iloveyou'.

    很多时候我们还需要根据我们的需要 做一些自定义操作    如下:

     1 自定义filter代码文件摆放位置:
     2 app01/
     3     __init__.py
     4     models.py
     5     templatetags/  # 在app01下面新建一个package package
     6         __init__.py
     7         app01_filters.py  # 建一个存放自定义filter的文件
     8     views.py
    9 编写自定义的filter方法: 10 from django import template 11 register = template.Library() 12 13 14 @register.filter(name="cut") 15 def cut(value, arg): 16 return value.replace(arg, "") 17 18 19 @register.filter(name="addSB") 20 def add_sb(value): 21 return "{} SB".format(value)

    22 使用自定义的filter方法: 23 {# 先导入我们自定义filter那个文件 #} 24 {% load app01_filters %} 25 26 {# 使用我们自定义的filter #} 27 {{ somevariable|cut:"0" }} 28 {{ d.name|addSB }}

     for循环中可用的参数:

    1 forloop.counter   #当前循环的索引值(从1开始)
    2 forloop.counter0   # 当前循环的索引值(从0开始)
    3 forloop.revcounter  # 当前循环的倒序索引值(从1开始)
    4 forloop.revcounter0 # 当前循环的倒序索引值(从0开始)
    5 forloop.first # 当前循环是不是第一次循环(布尔值)
    6 forloop.last  # 当前循环是不是最后一次循环(布尔值)
    7 forloop.parentloop  # 本层循环的外层循环
  • 相关阅读:
    The 9th SWJTU ACM Final Tutorial
    The 9th SWJTU ACM Online Tutorial
    ACdream群赛(5) D Palindrome
    ACdream群赛(5)总结
    The 9th SWJTU ACM Qualification Tutorial
    IIUC Inter University Programming Contest 2012总结
    曾经流行的,即将流行的几种渲染模式(render pipeline)
    ogre线程及其死锁问题
    crysis shader系统简单分析
    编译并集成mono 2.6.4到应用程序中
  • 原文地址:https://www.cnblogs.com/cuilinpu/p/10321304.html
Copyright © 2020-2023  润新知