【发布时间】:2010-08-19 00:49:15
【问题描述】:
我有两个 4 层对象,我将它们传递给 django 模板。我目前正在遍历每一层,如果存在则下降一个级别。我最终得到了表示循环时对象中当前位置的键、键 2 和键 3。我想使用这些变量引用具有相同层的另一个对象,但遇到了一些麻烦。
如果我尝试在 python 中执行此操作,它看起来像这样
my_object[ key ][ key2 ][ key3 ]
但在 django 模板中,我似乎不能使用括号,如果我使用句点,它会认为 key 是键名,而不是将其视为变量。
如果您需要有关我的代码的更多详细信息,请告诉我。谢谢!
编辑:这是我的对象的外观示例,以及我的模板代码。
variable1 = {
"content": {
"pages": {
"view":True,
"add":True,
"edit":True,
"delete":True
},
"articles": {
"view":True,
"add":True,
"edit":True,
"delete":True
},
"slideshow": {
"view":True,
"edit":True
},
},
"people": {
"view":True,
"add":True,
"edit":True,
"delete":True,
"sort-staff":True,
"sort-riders":True
}
}
variable2和variable1一样,key一样,但是缺少一些key。
这是我的模板对这个对象进行排序的样子。
{% for key, value in variable1.items %}
<strong>{{ key|title }}</strong>
{% for key2, value2 in value.items %}
{% if value2.items %}
<p class="indent">{{ key2|title }}
{% for key3, value3 in value2.items %}
<p class="indent"><input type="checkbox" name="form_permission_{{ key }}_{{ key2 }}_{{ key3 }}" {% if variable2[key][key2][key3] %}checked="checked"{% endif %}> {{ key3|title }}</p>
{% endfor %}
</p>
{% else %}
<p class="indent"><input type="checkbox" name="form_permission_{{ key }}_{{ key2 }}"> {{ key2|title }}</p>
{% endif %}
{% endfor %}
{% endfor %}
如果您查看缩进最多的行,您将看到{% if variable2[key][key2][key3] %}checked="checked"{% endif %}。你应该能够理解我想用该代码完成什么。
【问题讨论】:
-
你能贴出你的对象是什么样子和你的模板代码吗?
标签: python django django-templates