我目前在我的flask应用程序上使用一些Jinja2模板,使用来自简单sqlite请求的图像路径在html页面上提取图像。即过程如下:
1。从SQLite检索图像路径 在SQLite中,它只是一个文本字段,即:
imagePath text
例如,它类似于“ post1.png”
2。格式化html页面的渲染模板 使用url_for创建具有给定图像路径的图像元素,即:
<img src="{{ url_for('static', filename='assets/images/blog/{{ imagePath }}') }}" alt="" class="img-fluid">
所以,我希望看到类似的东西
<img src="assets/images/blog/post1.png" alt="" class="img-fluid">
但是,相反,当页面呈现时,我得到了一些奇怪的url编码,即:
<img src="/static/assets/images/blog/%7B%7B%20post%5B7%5D%20%7D%7D" alt="" class="img-fluid">
我在模板制作过程中做错了什么吗?还是我可以删除所有生成的十六进制字符?我尝试传递一个字符串过滤器,但这似乎也不起作用。
答案 0 :(得分:0)
启用自动转义后,默认情况下所有操作均会转义,除非明确标记为安全的值。变量和表达式可以在以下两种情况中标记为安全: -应用程序使用MarkupSafe.Markup的上下文字典,或者 -模板,带有
|safe
过滤器
因此,您可以尝试使用safe
过滤器(http://jinja.pocoo.org/docs/2.10/templates/#safe):
<img src="{{ url_for('static', filename='assets/images/blog/' ~ imagePath ) | safe }}" alt="" class="img-fluid">
或遵循Jinja2模板文档中的其他建议。