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

在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 08:35:23