zoukankan      html  css  js  c++  java
  • django cycle标签

    django 模板系统 有很多标签,其中cycle我觉得不好理解,至少网上文档也不好理解。

    这些标签可以通过渲染模板文件而获得我们预期的效果和文字,常用的有如下这些标签:

    标签:{% 标签名 %}
    {% if 变量 %}  支持not or and,空对象空的玩意0默认为False
    {% else %}
    {% endif %}


    {% for x in 变量名 %}      for 的forloop变量,有如下:counter,counter0,revcounter,revcounter0,first,last,parentloop
    {% empty %}
    {% endfor %}

    {% ifequal 变量一 变量二 %}
    {% else %}
    {% endifequal %}

    python的字典,列表,布尔,不能作为模板的比较量
    {% ifnotequal %}
    {% else %}
    {% endifnotequal %}

    过滤器:
    用管道符,first(取得第一个字符),lower,upper,truncatewords(显示变量的前三十个词)
        addslashes(添加反斜杠到,任何反斜杠,单引和双引号),length(长度,个数)
        data(格式化datatime对象,例子:{{ pub_data|data:"F j,Y" }})
        过滤器,看附录F
    有参数的话直接冒号接参数,如:“参数”

    {% block %}
    {% endblock %}

    {% comment %}
    {% endcomment %}

    {% crsf_taken %}
    防止crsf攻击

    {% autoescape off%}{% endautoescape %}关闭自动转义,django默认会对传入模板的特殊符号进行转义,为了安全起见

    而比较特别的有一个就是cycle标签,什么功能呢

    例子:

    cycle会循环它后面的每一个出现的东东,先看例子

    {% for foo in list %}
    {% cycle 'row1' 'row2' %}
    {% endfor %}

    每一次循环会循环取得‘row1’和‘row2’这两个。cycle这五个字好像有魔力,每一次循环可以得到一个row,然后会记录,下一次看到cycle就会取得下一个row。

    上面是放在html模板文件里,所以我的结果是:

    ‘row1’ ‘row2’ ‘row3’

    在我的视图函数里面,我给list循环三次

    有时候我们可以给一个循环去一个名字如下代码

    我是定义1:{% cycle 'row1' 'row2' as cbc %}
    我是定义2:{% cycle 'row3' 'row3' as aaa%}

    页面是会有:我是定义1:row1 我是定义2:row3

    去了名字的cycle就可以用变量来取得,就像:{{ cbc }}{{ aaa }}

    这个变量就是取得相应循环次数所得的cycle值,

    我是定义1:row1 我是定义2:row:3 变量1:row1 变量2:row:3 我是定义1:row2 我是定义2:row4 变量1:row2 变量2:row4 我是定义1:row1 我是定义2:row:3 变量1:row1 变量2:row:3

    结果很烦,这时候我们就会考虑,定义的标签可以不每次都说出自己是谁吗,它就不能保持沉默?可以

    {% for foo in list %}
    我是定义1:{% cycle 'row1' 'row2' as cbc silent%}
    我是定义2:{% cycle 'row:3' 'row4' as aaa silent%}
        变量1:{{ cbc }}
        变量2:{{ aaa }}
    {% endfor %}

    在最后加入silent,告诉它沉默,就不会说话了,这样就只有变量会说话了,以后。

    我是定义1: 我是定义2: 变量1:row1 变量2:row:3 我是定义1: 我是定义2: 变量1:row2 变量2:row4 我是定义1: 我是定义2: 变量1:row1 变量2:row:3

    定义后的都没了。

    当然,还有一个点,我把for循环去了先

    我是定义1:{% cycle 'row1' 'row2' as cbc %}
        变量1:{{ cbc }}

    没有循环了,但是我们可以告诉模板说,给我循环。像这样

    我是定义1:{% cycle 'row1' 'row2' as cbc %}
        变量1:{{ cbc }}
        给我循环:{% cycle cbc %}
        给我循环:{% cycle cbc %}
        给我循环:{% cycle cbc %}
    </body>

    然后他就会乖乖的不断取得下一个值,如果你在cbc名字后面,加入了silent,那么后面的cycle都会保持沉默,除了变量形式的。

  • 相关阅读:
    apt-get install jdk
    progit-zh(Git中文文档)
    indexedDB bootstrap angularjs 前端 MVC Demo
    状态模式
    使用TypeConverter类
    wpf 全局异常捕获处理
    WPF 中的形状和基本绘图概述
    WPF设计自定义控件
    WPF快速入门系列(9)——WPF任务管理工具实现
    WPF快速入门系列(8)——MVVM快速入门
  • 原文地址:https://www.cnblogs.com/wuweixin/p/4891543.html
Copyright © 2011-2022 走看看