博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django模板之forloop
阅读量:4506 次
发布时间:2019-06-08

本文共 2234 字,大约阅读时间需要 7 分钟。

在django的模板中,有forloop这一模板变量,颇似php Smarty中的foreach.customers,

Smarty foreach如下:

{foreach name=customers from=$custid item=curr_id}

{$smarty.foreach.customers.iteration} <-- Tells you which item you are at (integer)
{$smarty.foreach.customers.first} <-- Tells you if the current item is the first item (boolean) 
{$smarty.foreach.customers.last} <-- Tells you if the current item is the last item (boolean) 
{$smarty.foreach.customers.total} <-- Tells you how many items are in the array (integer)
{/foreach}

 

而django forloop如下:

在每个`` {% for %}``循环里有一个称为`` forloop`` 的模板变量。这个变量有一些提示循环进度信息的属性。

forloop.counter 总是一个表示当前循环的执行次数的整数计数器。 这个计数器是从1开始的,所以在第一次循环时 forloop.counter 将会被设置为1。
    {% for item in todo_list %}
        <p>{
{ forloop.counter }}: {
{ item }}</p>
    {% endfor %}
forloop.counter0 类似于 forloop.counter ,但是它是从0计数的。 第一次执行循环时这个变量会被设置为0。
forloop.revcounter 是表示循环中剩余项的整型变量。 在循环初次执行时 forloop.revcounter 将被设置为序列中项的总数。 最后一次循环执行中,这个变量将被置1。
forloop.revcounter0 类似于 forloop.revcounter ,但它以0做为结束索引。在第一次执行循环时,该变量会被置为序列的项的个数减1。
forloop.first 是一个布尔值,如果该迭代是第一次执行,那么它被置为```` 在下面的情形中这个变量是很有用的:
System Message: WARNING/2 (<string>, line 1071); backlink
Inline literal start-string without end-string.
    {% for object in objects %}
        {% if forloop.first %}<li class="first">{% else %}<li>{% endif %}
        {
{ object }}
        </li>
    {% endfor %}
forloop.last 是一个布尔值;在最后一次执行循环时被置为True。 一个常见的用法是在一系列的链接之间放置管道符(|)
    {% for link in links %}{
{ link }}{% if not forloop.last %} | {% endif %}{% endfor %}
    上面的模板可能会产生如下的结果:
    Link1 | Link2 | Link3 | Link4
    另一个常见的用途是为列表的每个单词的加上逗号。
    Favorite places:
    {% for p in places %}{
{ p }}{% if not forloop.last %}, {% endif %}{% endfor %}
forloop.parentloop 是一个指向当前循环的上一级循环的 forloop 对象的引用(在嵌套循环的情况下)。 例子在此:
    {% for country in countries %}
        <table>
        {% for city in country.city_list %}
        <tr>
        <td>Country #{
{ forloop.parentloop.counter }}</td>
        <td>City #{
{ forloop.counter }}</td>
        <td>{
{ city }}</td>
        </tr>
        {% endfor %}
        </table>
    {% endfor %}
forloop 变量仅仅能够在循环中使用。 在模板解析器碰到{% endfor %}标签后,forloop就不可访问了。
Context和forloop变量
在一个 {% for %} 块中,已存在的变量会被移除,以避免 forloop 变量被覆盖。 Django会把这个变量移动到 forloop.parentloop 中。通常我们不用担心这个问题,但是一旦我们在模板中定义了 forloop 这个变量(当然我们反对这样做),在 {% for %} 块中它会在 forloop.parentloop 被重新命名。

转载于:https://www.cnblogs.com/yangyangming/p/11151042.html

你可能感兴趣的文章
一个小型的表单处理框架分享
查看>>
bit,Byte,B,KB,MB,GB
查看>>
C++ 中string 的find与find_first_of 的区别?
查看>>
mysql 设置账户权限
查看>>
scons相关
查看>>
PE知识复习之PE扩大节
查看>>
工具篇-编辑器(Atom & Sublime Text3)初体验 & SFTP连接错误实例
查看>>
Xamarin中打开别人项目找不到android.jar文件
查看>>
文件还原工具Foremost
查看>>
SUSE Linux 10配置裸设备(raw devices)
查看>>
开机自启
查看>>
thinkphp整合系列之极验滑动验证码
查看>>
listView simpleAdapter 加载网络图片
查看>>
对GitHub的认识
查看>>
pat02-线性结构1. Reversing Linked List (25)
查看>>
bzoj 1123 BLO
查看>>
《河北省重大技术需求征集系统》可用性及可修改性战术分析
查看>>
【SSM】---Spring+SpringMVC+Mybatis框架整合
查看>>
[poj2368]Buttons_博弈论
查看>>
2018.12.23 bzoj2865&&1396: 字符串识别(后缀自动机+线段树)
查看>>