阻止Jinja将字符串转换为url编码?

时间:2019-07-23 17:48:38

标签: python html flask jinja2

我目前在我的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">

我在模板制作过程中做错了什么吗?还是我可以删除所有生成的十六进制字符?我尝试传递一个字符串过滤器,但这似乎也不起作用。

1 个答案:

答案 0 :(得分:0)

Jinja2 documentation说:

  

启用自动转义后,默认情况下所有操作均会转义,除非明确标记为安全的值。变量和表达式可以在以下两种情况中标记为安全:   -应用程序使用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模板文档中的其他建议。