Как разобрать вложенный словарь с Jinja2 - PullRequest
0 голосов
/ 05 октября 2018

Я передаю словарь в шаблон на python

   users={
        "output": {
                "title": "Sample Konfabulator Widget"
        }
    }

    return render_template('user.html', **locals())

, но не могу разобрать вывод на странице ответа (user.html).

{% extends "base.html" %}
{% block title %}Index{% endblock %}
{% block head %}
    {{ super() }}
    <style type="text/css">
        .important { color: #336699; }
    </style>
{% endblock %}
{% block content %}
    <h1>Users</h1>
    <p class="important">
      <ul>
      {% for user in users %}
          <li>{{user}}.title</a></li>
      {% endfor %}
      </ul>

    </p>
{% endblock %}

Но я нея получаю ожидаемый результат Sample Konfabulator Widget, а я получаю output.title.Как я могу получить значение output.title?

1 Ответ

0 голосов
/ 05 октября 2018

users - это словарь из одного элемента, а не список, поэтому цикл не имеет смысла.

Поскольку у вас есть только один элемент, получите это без цикла

<p>{{users['output']['title']}}</p>

Если вы действительно хотели иметь несколько «пользователей» и имели такой элемент

users={
    "output": {
            "title": "Sample Konfabulator Widget"
    }, 
    "output2": {
            "title": "foo"
    }
}

Тогда вы могли бы сделать цикл

  {% for key in users %}
      <li>{{key}} : {{users[key]['title']}}</li>
  {% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...