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

Django 4.1.3静态文件script.js返回404错误求助

解决Django DEBUG=False时静态文件404问题

核心原因

当DEBUG = False时,Django默认不会自动托管静态文件,必须手动配置静态文件的服务逻辑。你目前注释了根urls里的静态文件路由,同时可能未正确收集静态文件到指定目录,导致文件无法被访问。

分步解决方案

1. 修正settings.py中的静态文件配置

打开项目根目录的settings.py,确保以下配置正确:

import os

# 静态文件访问的URL前缀
STATIC_URL = '/static/'

# 运行collectstatic命令后,静态文件的统一存放目录
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')

# 告诉Django需要扫描的app静态文件目录
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'MyApp/static'),
]

2. 收集静态文件到统一目录

在终端执行以下命令,将所有app内的静态文件集中复制到STATIC_ROOT指定的文件夹:

python manage.py collectstatic

执行时会弹出确认提示,输入yes完成收集。

3. 启用根urls.py的静态文件路由

取消根urls.py中静态文件路由的注释,并补充必要的导入:

from django.conf import settings
from django.conf.urls.static import serve
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('MyApp.urls')),
]

# 为DEBUG=False场景添加静态文件服务路由
if not settings.DEBUG:
    urlpatterns += [
        path('static/<path:path>', serve, {'document_root': settings.STATIC_ROOT}),
    ]

注意:生产环境更推荐用Nginx、Apache等Web服务器直接托管静态文件,上述方式仅适用于测试或小型部署场景。

4. 确认模板中静态文件的引用方式

打开MyApp/templates/index.html,必须使用Django模板标签引用静态文件:

{% load static %}
<script src="{% static 'script.js' %}"></script>

禁止直接写硬编码路径/static/script.js,确保通过模板标签生成正确的访问URL。

5. 重启Django服务

修改配置后,重启你的Django应用,确保新配置生效。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 14:15:38