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都会保持沉默,除了变量形式的。

django cycle标签的更多相关文章

  1. django 自定义标签和过滤器

    django 自定义标签和过滤器 Django支持自定义标签和过滤器.起初还不太重视它这项功能,但最近试了试自定义标签.发现django这个功能实在是太爽了. 首先在你项目的一个app中建立一个pyt ...

  2. 解决AngularJS和Django模板标签冲突问题

    原地址 Django和AngularJS在模板中使用同样的符号来引用变量,例如 {{variable_name}}. 有两种解决办法,各有利弊.一个修改AngularJS模板语法,另一个使用Djang ...

  3. cycle标签和random两种方式美化表格

    一:cycle标签实现给表格变色 1. <style>标签里写好需要的颜色 2. 在要变色的地方(行/列)加固定的语句,按照顺序依次执行 代码: <!DOCTYPE html> ...

  4. 转:django模板标签{% for %}的使用(含forloop用法)

    django模板标签{% for %}的使用(含forloop用法)  {%  %}虽然这个是写在html中,但是这里边写的是服务端代码 在django模板标签中,{% for %} 标签用于迭代序列 ...

  5. Django 模板标签[转]

    Django 模板标签if/else 标签 基本语法格式如下: {% if condition %}     ... display{% endif %} 或者: {% if condition1 % ...

  6. Django 自定义标签与过滤器报错 No module named 'templatetags'

    Django 自定义标签与过滤器报错 按照网上的教程如果想使用自定义的标签与过滤器就得往settings.py中添加下列数据 TEMPLATES = [ { 'BACKEND': 'django.te ...

  7. django 自定义标签

    Context和RequestContext都能被Template 进行render RequestContext类接受reqest,字典,processors 实例化.并被TEMPLATE_CONT ...

  8. Django 学习第四天——Django 模板标签

    一.模板标签: 作用:标签在渲染的过程中提供任意的逻辑:例如 if for...in... 等 标签语法:由 {% %} 来定义的:例如:{% tag %}xxx{% endtag %} 常用标签: ...

  9. python的Web框架,Django模板标签及模板的继承

    模板标签 在传递数据的时候,会有大量的数据展示在浏览器上,而数据会是动态变化的,在html的编写中,数据也是需要动态的,而不能是写死的,如果动态展示呢. 给定的例子数据 views传递数据给html ...

随机推荐

  1. linux时钟同步

    方法1. ntpdate ip 搜索时钟服务器.找一个靠谱的时钟ip执行以上命令即可 可以把这个加入crontab中定时同步.# /usr/sbin/ntpdate 210.72.145.44 > ...

  2. java文件下载 rest

    /** * 返回文件二进制 * */ @GET @Path("/excel") @Produces("application/vnd.ms-excel; charset= ...

  3. oracle的函数

    1:nvl函数 nvl函数将一个null值转换为一个实际的值,数据类型可以是日期,数字,字符,数据类型必须匹配,vl能够转换任何数据类型,但是转换的数据类型返回值必须是nvl(expr1,expr2) ...

  4. Testcase篇

    1: forever @(); 等待,c触发event. forever @(`SOC_TESTBENCH_NAME.vt_event1);在整个case的执行过程中,只要.c触发event1,就执行 ...

  5. Oracle PL/SQL中的循环处理(sql for循环)

    今天来说下Oracle中的循环迭代处理,因为从自己的博客统计中看到,不少网友都搜索了关键字"SQL FOR循环",所以打算在这里说下个人的理解. PL/SQL也和我们常用的编程语言 ...

  6. 为什么DIY报价----走出软件作坊:三五个人十来条枪 如何成为开发正规军(十二)[转]

    前段时间,写了一个开发.实施.服务费用计算三部曲. 水清则无鱼--走出软件作坊:三五个人十来条枪 如何成为开发正规军(八) 实施费用也能DIY--走出软件作坊:三五个人十来条枪 如何成为开发正规军(九 ...

  7. UIViewController卸载过程(ios6.0之前)

    1.当应用程序收到内存不足的警告之后,程序中所有存在的UIViewController都会收到didReceiveMemoryWarning调用消息,目的是将当前不显示的View释放掉,缓解内存压力. ...

  8. 操作系统双语阅读 - Schedulers调度器2

    Most processes can be described as either I/O bound or CPU bound. 大多数进程都可以描述为IO绑定或者CPU绑定. An I/O-bou ...

  9. 161124、Java 异常处理的误区和经验总结

    本文着重介绍了 Java 异常选择和使用中的一些误区,希望各位读者能够熟练掌握异常处理的一些注意点和原则,注意总结和归纳.只有处理好了异常,才能提升开发人员的基本素养,提高系统的健壮性,提升用户体验, ...

  10. 160909、Filter多方式拦截、禁用IE图片缓存、Filter设置字符编码

    dispatcher多方式拦截 我们来看一个例子 我们定义一个index.jsp,里面有一个链接跳转到dispatcher.jsp页面 <body> <a href="di ...