#python #flask #jinja2
#python #flask #jinja2
Вопрос:
Я начинаю использовать Jinja, так что, возможно, вопрос тривиален, и я не понял (пока), как работают jinja и flask.
Что я хочу сделать, так это использовать файл yaml с некоторыми значениями (не слишком вложенными, но все же немного), загрузить его как словарь, передать значения словаря в шаблон jinja и использовать flask для рендеринга конечного html-файла / ов.
Это очень маленький скрипт, который я использую для flask:
from flask import Flask, render_template
import yaml
import os
file_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'example.yaml')
app = Flask(__name__)
my_dic = yaml.safe_load(open(file_path))
@app.route("/")
def template_test():
return render_template('base.html', my_dic=my_dic)
if __name__ == '__main__':
app.run(debug=True)
это шаблон jinja:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div class="container">
<p>
{{ my_dic['who']}}
</p>
</div>
</body>
</html>
и это супер глупое содержимое файла yaml (которое должно стать богаче многими другими значениями):
who:
- My string to view
Теперь это результат, который я вижу в html:
как вы можете видеть, вокруг строки есть []
и '
. Я мог бы найти правильный способ (и я уверен, что он есть) для отображения только содержимого строки.
Спасибо за любые предложения
РЕШАЕМАЯ
Спасибо за предложения. Проблема заключалась в том, что значения считывались как массив, и мне приходилось зацикливать их:
{% for i in my_dic.who %}
<p>
i
</p>
{% endfor %}
Ответ №1:
Я думаю, проблема в том, что переменная, которую вы пытаетесь отобразить, является массивом — и jinja отображает ее как таковую. Но вы хотите, чтобы он отображался как единственное значение, а это не так.
Вам следует попробовать отобразить переменную в виде массива с помощью цикла for: http://jinja.pocoo.org/docs/2.10/templates
Комментарии:
1. ` {% для i в my_dic.who %} {{ i }} {% endfor %}` также не работает..
2. Вы получаете тот же результат? Можете ли вы поделиться фрагментом?
3. нет, вообще пустой результат. Я просто заменил
{{ my_dic['who']}}
на цикл в другом комментарии4. Это означает, что в данном случае ключ не найден. my_dic.who, вероятно, оценивает значение none. Попробуйте использовать вариант со скобками