在学习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)
这里我们故意在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)
这个结果就是我们想要的嘛
#########################################################################
结论:
家里人总比外来人要亲嘛!
" 局部变量权利大于外部变量"
......
本文出自 “木子博客” 博客,请务必保留此出处http://ggbond.blog.51cto.com/8886865/1440427
原文地址:http://ggbond.blog.51cto.com/8886865/1440427