【发布时间】:2019-07-23 17:48:38
【问题描述】:
我目前正在我的烧瓶应用程序上使用一些 Jinja2 模板,以使用来自简单 sqlite 请求的图像路径在 html 页面上提取图像。 IE。流程如下:
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">
我在模板过程中做错了吗?或者我可以做些什么来删除所有生成的十六进制字符?我尝试传入一个字符串过滤器,但这似乎也不起作用。
【问题讨论】:
-
尝试打印
imagePath的真正含义 -
您的 url 编码转换为
{{ post[7] }}。这不是图像文件名的好选择。 -
你不能嵌套花括号 {{ }} 所以 Jinja 将它们作为 URL 的一部分进行转义。 stackoverflow.com/a/20845452/3357118 讨论了与 url_for() 几乎相同的用例