2013-11-02 32 views
29

Sözlüğümden bir şablona sözlüğe geçiyorum. Bu nedenle {"key1":"value1","key2":"value2"} anahtarın içinden geçirilir ve anahtarla geçer, değer çiftleri iyidir, ancak doğrudan erişimden belirli bir anahtarın görünümünden, örneğin bu json.items ["key1"] için "key1" gibi zarif bir çözüm bulamadım. Bazı/if ifadeleri kullanabilirim, ama doğrudan yapmayı tercih ederim. İşte Django şablonunda anahtar sözcüğüne göre erişme

html şablonunda kodun döngü aşağıdaki gibidir:

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

cevap

49

Django şablon dili sözlüğü anahtarlarını ararken destekler:

{{ json.key1 }} 

variables and lookups şablon dokümanlarını görün.

Şablon dili, öğesinin görüntülenmesini sağlamaz; burada key bir değişkentir. Bu Stack Overflow question'un yanıtlarında önerildiği gibi bunu yapmak için bir şablon filtresi yazabilirsiniz.

4

böyle bir şey deneyebilirsiniz bu sorunun üstesinden gelmek için: Aşağıdaki Dictionary dict = {'name':'myname','number':'mynumber'}

görüşlerini göndermeye Örneğin

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 değerini işlemek için şablon: <p>{{ dict.name }}</p>

'myname'

'u yazdırır
İlgili konular