code

Django 템플릿에서 변수를 사전 키로 사용

codestyles 2021. 1. 6. 08:23
반응형

Django 템플릿에서 변수를 사전 키로 사용


Django 템플릿의 사전에서 변수를 키로 사용하고 싶습니다. 나는 내 인생에서 그것을하는 방법을 알아낼 수 없습니다. 이름 또는 ID 필드가있는 제품과 제품 ID 색인이있는 등급 사전이있는 경우 다음과 같이 말할 수 있습니다.

{% for product in product_list %}
     <h1>{{ ratings.product.id }}</h1>
{% endfor %}

파이썬에서 이것은 간단한

ratings[product.id]

하지만 템플릿에서 작동하도록 만들 수 없습니다. 나는 ... 주사위없이 사용해 보았습니다. 아이디어?


데이터를 미리 준비해야합니다.이 경우 두 개의 튜플 목록을 템플릿에 전달해야합니다.

{% for product, rating in product_list %}
    <h1>{{ product.name }}</h1><p>{{ rating }}</p>
{% endfor %}

다음과 같은 템플릿 태그를 만듭니다 (yourproject / templatetags에서).

@register.filter
def keyvalue(dict, key):    
    return dict[key]

용법:

{{dictionary|keyvalue:key_variable}}

아주 더러운 솔루션 :

<div>We need d[{{ k }}]</div>

<div>So here it is:
{% for key, value in d.items %}
    {% if k == key %}
        {{ value }}
    {% endif %}
{% endfor %}
</div>

eviltnan의 답변을 바탕으로 그의 필터는 key키가 아닌 경우 예외를 발생 dict시킵니다.

필터는 예외를 발생시키지 않아야하지만 정상적으로 실패 해야합니다 . 이것은 더 강력하고 완전한 대답입니다.

@register.filter
def keyvalue(dict, key):    
    try:
        return dict[key]
    except KeyError:
        return ''

기본적으로 이것은 dict.get(key, '')Python 코드에서와 동일하게 수행 되며 더 명시 적이지만 try / except 블록을 포함하지 않으려는 경우에도 그렇게 작성할 수 있습니다.

참조 URL : https://stackoverflow.com/questions/2894365/use-variable-as-dictionary-key-in-django-template

반응형