在Django HTML中引入JS脚本遇404错误:文件存在却无法找到,求协助
问题原因
- Django的
templates目录仅用于存放HTML模板文件,框架不会为该目录下的资源提供静态文件访问路由,直接引用其中的JS文件必然触发404。 - 你当前使用的相对路径
src="templates/scripts/myscript.js",会让浏览器从当前页面URL(/health_app/)下发起请求,最终请求路径变为/health_app/templates/scripts/myscript.js,而这个路径没有对应的服务端处理逻辑。
解决步骤
1. 调整目录结构,创建标准静态文件目录
在health_app下新建static目录,将JS文件移到对应子目录,最终结构如下:
---- app -------- urls.py -------- settings.py -------- wsgi.py ---- health_app -------- urls.py -------- templates ------------- index.html -------- static ------------- health_app ------------------ scripts ----------------------- myscript.js
注:在
static下再建与应用同名的目录(health_app),是为了避免多应用静态文件重名冲突,属于Django最佳实践。
2. 确认项目静态文件配置
打开根目录的app/settings.py,确保以下配置存在:
INSTALLED_APPS = [ # 其他已注册应用 'health_app', 'django.contrib.staticfiles', # 必须包含该应用 ] # 静态文件核心配置 STATIC_URL = '/static/' STATICFILES_DIRS = [ BASE_DIR / "static", ]
3. 修改模板中的JS引用代码
在index.html顶部加载static模板标签,再用它生成正确的静态文件路径:
{% load static %} <!DOCTYPE html> <html> <head> <!-- 其他页面头部内容 --> <script type="text/javascript" src="{% static 'health_app/scripts/myscript.js' %}"></script> </head> <!-- 页面其他内容 --> </html>
4. 验证效果
重启Django开发服务器,访问页面后查看控制台,若不再出现404错误,且页面源码中脚本路径变为/static/health_app/scripts/myscript.js,则说明配置生效。
内容的提问来源于stack exchange,提问作者Alevtina
相关产品推荐
相关产品推荐

