Доступ словарь под ключ в Django шаблон

Я'м передачи словаря из мой взгляд на шаблон. Так {"и ключ1-то":"по значение1" и"Ну ключ2-то":"и значение2" и} передается в цикл и через ключ,значение пары в порядке, но я'вэ не нашли элегантное решение от доступа напрямую в определенную клавишу, скажем в "ключ1" В например бу с JSON.предметы не ключ1-то"]. Я мог бы использовать некоторые, если/то заявления, но я'д, а не напрямую есть ли способ?

Вот зацикливание кода в шаблоне HTML:

{% for key, value in json.items %} 
  <li>{{key}} - {{value}}</li>
 {% endfor %}
Решение

Шаблон Джанго язык поддерживает просмотр ключи словаря следующим образом:

{{ json.key1 }}

См. шаблон документации о переменные и поиска.

Язык шаблона не предоставляют способ для отображения данных JSON[ключ], гдеключ` - это переменная. Вы можете написать шаблон фильтра для этого, как было предложено в ответах на этот вопрос переполнения стека.

Комментарии (1)

Например, чтобы отправить ниже словарь дикт = {&#39;имя&#39;:&#39;мое имя&#39;,&#39;и#39;:&#39;mynumber&#39;}

вид : возвращение рендеринга(по запросу, самовывоз.имя_шаблона, {&#39;дикт&#39;: дикт})

Чтобы представить значение в шаблон HTML: <п>{{ дикт.имя }}</п>

Он печатает &#39;мое имя&#39;

Комментарии (0)

Чтобы преодолеть эту проблему, вы могли бы попробовать что-то вроде этого:

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>

    <div class="book_name"> {{item.name}}</div>
    <div class="book_by">{{item.author}}</div>
    <span>Rs. {{item.price}}</span> {{item.discount}}% OFF 
    Rs. {{item.total}}
{% endfor %}
Комментарии (0)

Как @Аласдер говорит, Вы можете использовать фильтр шаблон. В каталоге 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 %}
Комментарии (1)