2013-11-02 2 views
29

나는 내보기에서 템플릿으로 사전을 전달하고 있습니다. 따라서 {"key1":"value1","key2":"value2"}이 전달되고 키, 값 쌍을 반복하는 것이 좋습니다. 그러나 특정 키의보기에서 직접 액세스 할 수있는 우아한 솔루션을 찾지 못했습니다. 예를 들어, bu json.items [ "key1"]와 같은 "key1"을 말하십시오. if/then 문을 사용할 수는 있지만 직접 처리하는 방법이 있습니까? 여기 장고 템플릿의 키로 사전에 액세스하기

는 HTML 템플릿 코드를 루핑 다음과 같이

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

답변

49

장고 템플릿 언어 사전의 열쇠를 찾고 지원 :

{{ json.key1 }} 

variables and lookups에 템플릿 문서를 참조하십시오.

템플릿 언어는 key이 변수 인 json[key]을 표시하는 방법을 제공하지 않습니다. 이 Stack Overflow question에 대한 응답에서 제안 된대로 템플릿 필터를 작성하여이 작업을 수행 할 수 있습니다.

4

이 같은 시도 할 수이 문제를 해결하려면 아래의 사전을 dict = {'name':'myname','number':'mynumber'}

의견을 보내 예를 들어

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 %} 
3

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

는 HTML의 값을 렌더링하려면 템플릿 : <p>{{ dict.name }}</p>

인쇄하기 'myname'

관련 문제