我有两个4层对象,我将传递给django模板。我目前正在循环遍历每个层,如果存在则下降到一个级别。我最终得到了key,key2和key3,它表示循环时对象中的当前位置。我想使用这些变量引用具有相同层的其他对象,但是遇到了一些麻烦。
如果我试图在python中执行此操作,它将看起来像这样
my_object[ key ][ key2 ][ key3 ]
但是在django模板中,似乎我不能使用括号,如果我使用句点,它会认为键是键名,而不是将其视为变量。
如果您需要有关我的代码的更多详细信息,请与我们联系。谢谢!
编辑:以下是我的对象的示例以及我的模板代码。
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与变量1相同,具有相同的键,但缺少某些键。
以下是我的模板在整理此对象时的样子。
{% 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 %}
。您应该能够理解我正在尝试使用该代码完成的任务。
答案 0 :(得分:0)
这不可能这样做。考虑为此编写模板标签或过滤器。
答案 1 :(得分:0)
在将数据发送到模板之前,我最终进行了排序和比较,因此不再需要这个问题。随意发布其他选项。