访问给定Django模板属性的字典?

2024-04-26 17:26:50 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我的问题是,我需要迭代给定一个属性的字典,这是for循环的值。例如,我有一个名为my_dictionary的字典,它由django模板中的For循环进行迭代,其属性名为q。我需要的是使用q属性访问该字典。我试过用{{my_dictionary.q}}{{my_dictionary.{{q}} }}但都没用。我能做什么?我想它应该与Python my_dictionary[q]中的类似。非常感谢。你知道吗

更新:实际上,qmy_dictionary无关。假设q是列表的每个元素[1,2,3]同时my_dictionary是一个具有以下形式的字典:{1: ['a','b','c'], 2:['a'], 3:['c']}。所以我要做的是访问字典中给定第一个列表[1,2,3]值的每个值。你知道吗


Tags: django模板元素列表fordictionary字典属性
2条回答

假设您将字典从视图返回到模板。假设你的字典名是my_dictionary,那么在模板中你需要这样做:

{% for q in my_dictionary %}
    <p> {{ q.your_dictionary_key_name }} </p>
{% endfor %}

用于迭代字典中的列表项

{% for key, value in dictionary.items %}
    <li><a href="{{key}}">{{value}}</a></li>
{% endfor %}

您可以编写自定义模板筛选器:

from django.template.defaulttags import register
register = Library()
...
@register.filter
def get_item(dictionary, key):
    # use .get so that if the key does not exist a KeyError will be raised
    return dictionary.get(key)

模板中的用法:

{% for q, value in my_dictionary.items %}
    {{ my_dictionary.items|get_item:<key_variable_here> }}
{% endfor %}

相关问题 更多 >