我开始使用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中看到的输出:
如您所见,字符串周围有
[]
和'
。我可以找到一种正确的方式(而且我敢肯定有)来仅渲染字符串内容。谢谢你的建议
解决了
多亏了建议。问题在于这些值被读取为数组,而我不得不循环它们:
{% 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/