загруженный словарь yaml как строки без кавычек и скобок в шаблоне jinja - PullRequest
1 голос
/ 31 марта 2019

Я начинаю использовать Джинджу, так что, возможно, вопрос тривиален, и я не понял (пока), как работают Джинджа и фляга.

То, что я хочу сделать, это использовать файл yaml с некоторыми значениями (не слишком вложенными, но все же немного), загрузить его в качестве словаря, передать значения словаря в шаблон jinja и использовать flask для визуализации финального файла. HTML-файл / с.

Это супер маленький скрипт, который я использую для колбы:

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)

это шаблон дзиндзя:

<!DOCTYPE html>
<html>
  <head>
  </head>
  <body>
    <div class="container">
      <p>
        {{ my_dic['who']}}
      </p>
    </div>
  </body>
</html>

и это супер глупое содержимое файла yaml (которое должно стать богаче со многими другими значениями):

who:
  - My string to view

Теперь вот вывод, который я вижу в html:

enter image description here

Как видите, вокруг строки [] и '. Я мог бы найти правильный способ (и я уверен, что есть) для визуализации только содержимое строки.

Спасибо за любые предложения

решаемые

Спасибо за предложения. Проблема заключалась в том, что значения были прочитаны как массив, и мне пришлось их зациклить:

{% for i in my_dic.who %}
  <p>
    i
  </p>
{% endfor %}

1 Ответ

2 голосов
/ 31 марта 2019

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

Вы должны попытаться отобразить переменную как массив, используя цикл for: http://jinja.pocoo.org/docs/2.10/templates/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...