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

部署在DigitalOcean上的Django应用静态文件无法加载

Django部署DigitalOcean静态文件加载失败排查方案

核心问题:Whitenoise中间件未配置

你的settings里已经启用了Whitenoise的静态文件存储类,但缺少关键的Whitenoise中间件,这是静态文件无法被正确服务的主要原因。

修改MIDDLEWARE配置,在SecurityMiddleware后添加Whitenoise中间件:

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    "whitenoise.middleware.WhiteNoiseMiddleware",  # 新增该行
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

生产环境必执行步骤

  • 收集静态文件
    在服务器项目根目录运行命令,将所有静态文件归集到STATIC_ROOT指定的目录:
python manage.py collectstatic

执行时会提示确认,输入yes即可。

  • 检查环境变量

    1. 确保DEBUG设为False:生产环境下Django仅会通过Whitenoise或配置的静态文件服务器提供静态资源,开启DEBUG会导致资源加载异常。
    2. ALLOWED_HOSTS必须包含你的服务器IP或域名,例如:
      DJANGO_ALLOWED_HOSTS=your-domain.com,192.168.1.100
      
  • 修复目录权限
    确保web服务进程(如Gunicorn、Nginx)能读取静态文件目录:

sudo chmod -R 755 /path/to/your/project/staticfiles
sudo chown -R www-data:www-data /path/to/your/project/staticfiles

额外排查方向

  • 查看浏览器控制台的网络请求:静态文件返回404说明文件未被正确收集,500是服务器内部错误,403则是权限问题。
  • 若使用Nginx反向代理,确认配置未拦截静态文件请求(使用Whitenoise时,无需Nginx处理静态文件,直接由Gunicorn转发即可)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 12:02:50