You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask模板img的src使用变量调用url_for返回404问题排查

问题根因

报错是Jinja2模板语法使用错误导致的:
{{ }}是Jinja2的表达式边界标记,一旦处于外层{{ }}包裹的表达式上下文内部,引用变量不需要、也不能再嵌套一层{{ }}。你原有写法里内层的{{ file_name }}会被直接识别为普通文本,不会做变量替换,最终URL里的花括号被编码为%7B、%7D,正好对应你报错里的/static/output/%7B%20file_name%20%7D路径,请求的是文件名字面量为{ file_name }的资源,自然返回404。

修复方法

修改img标签的src写法即可,核心是在url_for的参数表达式里直接引用file_name变量拼接路径,禁止嵌套花括号,任选以下一种写法就行:

  • 用+做字符串拼接,写法最直观:
<img src="{{ url_for('static', filename='output/' + file_name + '.png') }}">
  • 用Jinja2原生的字符串拼接符~,会自动将操作数转为字符串,容错性更好:
<img src="{{ url_for('static', filename='output/' ~ file_name ~ '.png') }}">
  • 用百分号格式化字符串:
<img src="{{ url_for('static', filename='output/%s.png' % file_name) }}">

修改后确认static/output/目录下确实存在对应文件名的png资源,清下浏览器缓存刷新页面就能正常加载。


内容的提问来源于stack exchange,提问作者DarkLeader

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 19:48:29