Колба Jinja2 - Parse JSON - PullRequest
0 голосов
/ 11 мая 2018

Я пытаюсь отобразить некоторые результаты JSON в HTML-шаблоне Jinja2, но он возвращает либо пустую страницу, либо каждый символ JSON в новой строке или каждый символ с пробелом.

Объект, который я отправляю в шаблон Jinja2, выглядит следующим образом:

[
  {
    "name": "John",
     "lastname": "Smith", 
     "age": 22, 
     "likes": [
       {"fruits": 
         ["bananas", "oranges"]
         }, 
       {"sweets": 
         ["chocolate"]
         }
       ]
     }
   ]

Для отправки объекта JSON в шаблон Jinja2 я использую:

render_template("report.html", items=items)

В HTML-шаблоне Jinja2, если яиспользуйте {{ items }} для отображения полного объекта в виде текста.Если я пытаюсь получить {{ items['name'] }}, он ничего не отобразит на странице, страница будет полностью пустой.

Я также попытался

{% for x in items %}
{{ x }}
{% endfor %}

, и он отображает толькотот же «текст», но с интервалом: [ { " n a m e " : "J o h n " [...]

В файле HTML я пытаюсь сделать что-то вроде:

<div id="name">{{ items['name'] }}</div>

Как я могу отобразить объекты в JSONобъект, который я передаю Jinja2?

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Мне кажется, я дошел до конца.

Сначала нужно было json_dumps объект, а затем json.loads новый объект.

r = json.dumps(json_onject)
loaded_r = json.loads(r)
return render_template("report.html", items=loaded_r)

И теперь я могу использовать любое значение из объекта JSON.

0 голосов
/ 11 мая 2018

Эй, ваш json - это массив, а не объект, поэтому вы должны принять это во внимание и сначала получить доступ к нужному объекту, а затем получить доступ к атрибуту.

<div id="name">{{ items[0]['name'] }}</div>  

или

В этом случае x становится объектом, и вы можете использовать его следующим образом:

{% for x in items %}
    <div id="name">{{ x['name'] }}</div>  
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...