1


0

Djangoテンプレートタグで変数をオブジェクトキーとして使用する

djangoテンプレートに渡す2つの4層オブジェクトがあります。 現在、各層をループし、存在する場合はレベルを下げます。 ループ中にオブジェクトの現在の位置を表す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 %}
    {{ key|title }}
    {% for key2, value2 in value.items %}
        {% if value2.items %}
            {{ key2|title }}
            {% for key3, value3 in value2.items %}
                 {{ key3|title }}
            {% endfor %}

        {% else %}
             {{ key2|title }}
        {% endif %}
    {% endfor %}
{% endfor %}

最もインデントされた行を見ると、 `{%if variable2 [key] [key2] [key3]%} checked =" checked "{%endif%}`が表示されます。 そのコードで私が達成しようとしていることを理解できるはずです。

2 Answer


0


これはこの方法ではできません。 このためのテンプレートタグまたはフィルターの作成を検討してください。


0


データがテンプレートに送信される前にソートと比較を行ったため、この質問はもう必要ありません。 他のオプションを自由に投稿してください。