source

Django 템플릿에서 키로 사전 액세스

ittop 2023. 4. 2. 11:56
반응형

Django 템플릿에서 키로 사전 액세스

내 보기에서 템플릿으로 사전을 넘기고 있습니다.그렇게{"key1":"value1","key2":"value2"}키를 통해 루핑됩니다. 값 쌍은 괜찮지만 특정 키에서 뷰에 직접 액세스하여 우아한 솔루션을 찾을 수 없습니다."key1"예를 들어 bu json.disc["key1"]와 같이 입력합니다.몇 가지 if/then 문장을 사용할 수 있지만, 직접 사용하는 것이 더 낫습니다. 방법이 있습니까?

다음은 html 템플릿의 루프 코드입니다.

{% for key, value in json.items %} 
  <li>{{key}} - {{value}}</li>
 {% endfor %}

Django 템플릿 언어는 다음과 같은 사전 키 검색을 지원합니다.

{{ json.key1 }}

변수룩업에 대한 템플릿 문서를 참조하십시오.

템플릿 언어가 표시할 방법을 제공하지 않습니다.json[key],어디에key는 변수입니다.이 Stack Overflow 질문에 대한 답변에서 제시된 대로 템플릿필터를 작성할 수 있습니다.

@Alasdair에서 알 수 있듯이 템플릿필터를 사용할 수 있습니다.고객님의 고객명templatetags디렉토리, 다음 파일을 만듭니다.dict_key.py:

from django.template.defaultfilters import register

@register.filter(name='dict_key')
def dict_key(d, k):
    '''Returns the given key from a dictionary.'''
    return d[k]

그런 다음 HTML에서 다음과 같이 쓸 수 있습니다.

{% for k in json.items %} 
  <li>{{ k }} - {{ json.items|dict_key:k }}</li>
{% endfor %}

예를 들어, 아래 사전을 보내려면dict = {'name':'myname','number':'mynumber'}

뷰:return render(request, self.template_name, {'dict': dict})

값을 html 템플릿으로 렌더링하려면:<p>{{ dict.name }}</p>

인쇄하다'myname'

이 문제를 해결하려면 다음과 같은 방법을 시도해 보십시오.

def get_context_data(self, **kwargs):
    context['cart'] = []
    cart = Cart()
    cart.name = book.name
    cart.author = book.author.name
    cart.publisher = book.publisher.name
    cart.price = 123
    cart.discount = 12
    cart.total = 100
    context['cart'].append(cart)
    return context


class Cart(object):
    """
    Cart Template class

    This is a magic class, having attributes
    name, author, publisher, price, discount, total, image
    You can add other attributes on the fly
    """
    pass


By this way you can access your cart something like this:
{% for item in cart %}
    <div class="jumbotron">
    <div>
    <img src="{{item.image}}" />
    <div class="book_name"> <b>{{item.name}}</b></div>
    <div class="book_by"><i>{{item.author}}</i></div>
    <span>Rs. {{item.price}}</span> <i>{{item.discount}}% OFF </i>
    <b>Rs. {{item.total}}</b>
{% endfor %}

언급URL : https://stackoverflow.com/questions/19745091/accessing-dictionary-by-key-in-django-template

반응형