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

Flask项目引入静态JS文件返回404错误,其他解决方案无效如何处理

问题原因
  • 核心原因:视图函数直接返回硬编码的HTML字符串,没有经过Flask的Jinja2模板引擎渲染,{{url_for()}}属于模板语法,不会被解析替换成实际的静态资源路径,浏览器会直接把{{...}}作为普通字符串拼接进请求URL,日志里的%7B%7B就是{{的URL编码,这是404的主要诱因。
  • 路径参数错误:就算启用模板渲染,你代码里filename参数开头多写了斜杠,应该传入相对static目录的路径,不需要加前导斜杠。
  • 潜在笔误:日志中请求的jquery路径为/js/bin/jquery-3.4.1.slim.min.js,但你的目录结构里js下是lib文件夹,需要核对代码里是否把lib误写为bin,或者文件放错了目录。
修复方案

方案1:使用标准模板渲染(推荐)

  1. 在art目录下新建名为templates的文件夹,把你写的HTML代码完整保存到templates/index.html文件中
  2. 修正HTML里script标签的路径,去掉filename的前导斜杠:
<script src="{{url_for('static', filename='js/lib/jquery-3.4.1.slim.min.js')}}"> </script>
<script src="{{url_for('static', filename='js/Main.js')}}"> </script>
  1. 修改视图函数,调用render_template渲染模板而非直接返回字符串:
from flask import Flask, render_template

app = Flask(__name__)

@app.route("/art")
def index():
    return render_template("index.html")

if __name__ == "__main__":
    app.run(host="127.0.0.1", port=8080, debug=True)

方案2:硬写静态资源路径(无需模板)

如果不想引入模板体系,直接把script标签里的{{url_for()}}替换为实际的静态资源路径即可:

<script src="/static/js/lib/jquery-3.4.1.slim.min.js"> </script>
<script src="/static/js/Main.js"> </script>
验证步骤

修复后重启Flask服务,确认静态文件目录结构正确:

  • art/static/js/lib/jquery-3.4.1.slim.min.js 存在
  • art/static/js/Main.js 存在

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 06:57:03