要使用我的Django应用程序中的相关参数生成一组Javascript变量,我有两个嵌套的for循环:
<script>
{% for model in models %}
{% for item in model.attribute|slice:":3" %}
{% if forloop.first %}
var js_variable{{ forloop.parentloop.counter0 }} = [
{% endif %}
'{{ item.attribute }}' ,
{% if forloop.last %}
{{ item.attribute }} ]
{% empty %}
var js_variable{{ forloop.parentloop.counter0 }} = []
{% endfor %}
{% endfor %}
....code that gets unhappy when js_variable[n] doesn't exist.....
</script>
当{% empty %}
出现时,它似乎无法访问{{ forloop.parentloop. counter0 }}
变量,因此变量名js_variable[n]
打印错误为js_variable
(没有计数器另外提供的号码,以及后来的代码抱怨。
这个变量是否会在{{ empty }}
代码中无法使用?
答案 0 :(得分:7)
这是预期的行为。简化我们:
{% for A ... %}
{{ forloop.* }} is there for the 'for A ...'
{% for B ... %}
{{ forloop.* }} is there for the 'for B ...'
{{ forloop.parentloop.* }} refers to the 'for A ...'
{% empty %}
{{ forloop.* }} is there for the 'for A ...' !!!
{% endfor %}
{% endfor %}
在{%empty%}中,{{forloop}}指的是父forloop!变化:
var js_variable{{ forloop.parentloop.counter0 }} = []
使用:
var js_variable{{ forloop.counter0 }} = []