yaml在jinja模板中将字典作为字符串(不带引号和括号)加载

时间:2019-03-31 15:08:02

标签: python flask jinja2

我开始使用Jinja,所以也许这个问题很微不足道,但我还没有了解Jinja和flask如何工作。

我想做的是使用一个带有一些值的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 个答案:

答案 0 :(得分:2)

我认为问题在于,您要呈现的变量是一个数组-jinja以此形式呈现它。但是您希望将其呈现为单个值-并非如此。

您应该尝试使用for循环将变量呈现为数组:http://jinja.pocoo.org/docs/2.10/templates/