在学习django时候,看到djangobook中关于forloop知识详解中,有这么一句话"在一个 {% for %} 块中,已存在的变量会被移除,以避免 forloop 变量被覆盖",这到底是什么含义呢?下面我们来通过实例说明他的含义:

python manager.py shell
>>>
>>>from django.template import Template, Context
>>>t = Template("""
       {% for item in items %}
          {{ forloop }}
       {% endfor %}
       """)
>>>c = Context({'items': [item for item in range(10)], 'forloop': 'test'})
>>>print t.render(c)

django学习笔记之forloop_第1张图片

这里我们故意在Context里面设置一个forloop字典key,然后在模板里面放一个forloop变量来"引用"传递过来的值,但是结果确不是我们想要的......

>>>t = Template("""
       {% for item in items %}
          {{ forloop.parentloop }}
       {% endfor %}
       """)
>>>c = Context({'items': [item for item in range(10)], 'forloop': 'test'})
>>>print t.render(c)

django学习笔记之forloop_第2张图片

这个结果就是我们想要的嘛


#########################################################################

结论: 

  1. 家里人总比外来人要亲嘛!

  2. " 局部变量权利大于全局变量"

  3. ......