Использование переменной в качестве ключа объекта в тегах шаблонов Django - PullRequest
1 голос
/ 19 августа 2010

У меня есть два 4-уровневых объекта, которые я передаю в шаблон django.Я в настоящее время для прохождения каждого уровня и снижения уровня, если он существует.В итоге у меня были ключи, 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 %}.Вы должны понимать, чего я пытаюсь достичь с помощью этого кода.

Ответы [ 2 ]

0 голосов
/ 19 августа 2010

Я закончил сортировку и сравнение до того, как данные были отправлены в шаблон, поэтому этот вопрос больше не нужен. Не стесняйтесь размещать другие варианты.

0 голосов
/ 19 августа 2010

Такого сделать нельзя.Изучите тег шаблона или фильтр для этого.

...