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

我想做的是使用一个带有一些值的yaml文件(没有太多嵌套,但还有一点点),将其作为字典加载,将字典值传递给jinja模板,并使用flask渲染最终的html文件/ s。

这是我用于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中看到的输出:

python - yaml将字典加载为jinja模板中不含引号和括号的字符串-LMLPHP

如您所见,字符串周围有[]'。我可以找到一种正确的方式(而且我敢肯定有)来仅渲染字符串内容。

谢谢你的建议

解决了

多亏了建议。问题在于这些值被读取为数组,而我不得不循环它们:

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

最佳答案

我认为问题在于您要渲染的变量是一个数组-jinja就是这样渲染它的。但是您希望将其呈现为单个值-并非如此。

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

关于python - yaml将字典加载为jinja模板中不含引号和括号的字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55442287/

10-15 19:55