我开始使用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中看到的输出:
如您所见,字符串周围有[]
和'
。我可以找到一种正确的方法(而且我敢肯定有)仅渲染字符串内容。
感谢任何建议
已解决
谢谢您的建议。问题在于这些值被读取为数组,我不得不循环它们:
{% for i in my_dic.who %}
<p>
i
</p>
{% endfor %}
答案 0 :(得分:2)
我认为问题在于,您要呈现的变量是一个数组-jinja以此形式呈现它。但是您希望将其呈现为单个值-并非如此。
您应该尝试使用for循环将变量呈现为数组:http://jinja.pocoo.org/docs/2.10/templates/