【问题标题】:Using a variable as an object key in Django Template Tags在 Django 模板标签中使用变量作为对象键
【发布时间】: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


【解决方案1】:

这是不能做到的。考虑为此编写模板标签或过滤器。

【讨论】:

  • 我很确定这无法完成,但似乎很多人可能会发现自己需要。我的希望是找到某人已经写过的东西(自定义标签或过滤器),我可以插入。
【解决方案2】:

我最终在将数据发送到模板之前进行了排序和比较,因此不再需要这个问题。随意发布其他选项。

【讨论】:

    猜你喜欢
    • 2021-06-02
    • 2016-04-05
    • 1970-01-01
    • 1970-01-01
    • 2022-06-25
    • 2016-11-21
    • 2023-03-19
    相关资源
    最近更新 更多