Шаблоны Django, как использовать теги и фильтры шаблонов для получения данных из JSON DICT - PullRequest
0 голосов
/ 10 мая 2019

У меня есть диктат, который можно увидеть здесь https://jsoneditoronline.org/?id=a570322381fc45919a7a03ebad78cbee

, но из того, что я читал до сих пор, это скорее список диктов.Я пытаюсь отобразить данные из диктовок, таких как заголовок, описание, авторы и категории, но теги шаблонов не отображают то, что я хочу, пробовал с циклами, но не могу получить к нему доступ

Пробные циклы, подобные этому

{% for items in books %}
    {% for volumeInfo in items %}
        {{ volumeInfo.title }}
    {% endfor %}
{% endfor %}

только то, что работает, {{books.items}}, но оно дает мне весь JSON, но мне нужно только несколько значений.

def api(request):
    books = {}
    if 'books' in request.GET:
        books = request.GET['books']
        url = 'https://www.googleapis.com/books/v1/volumes?q=%s' % books
        response = requests.get(url)
        books = response.json()
        print(type(books))
        with open("data_file.json", "w") as write_file:
            json.dump(books, write_file)

    return render(request, 'books/api.html', {'books': books})
{% load get_item from template_filters %}
{% block content %}
  <h2>Google API</h2>
  <form method="get">
    <input type="text" name="book">
    <button type="submit">search on google books api</button>
  </form>
  {% if books %}
    <p>
{% for items in books %}
{% for volumeInfo in items %}
{{ volumeInfo.title }}
{% endfor %}
{% endfor %}
{{ books.items }}
    </p>
  {% endif %}
{% endblock %}

1 Ответ

1 голос
/ 10 мая 2019

Вы должны следовать структуре JSON, которая у вас есть. Подводя итог, данные выглядят так:

{
  "items": [
    {
      "volumeInfo": {
        "title": "Hobbit czyli Tam i z powrotem"
      }
    }
  ]
}

Итак, в шаблоне:

{% for item in books.items %}
  {{ item.volumeInfo.title }}
{% endfor %}
...