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

Django生产环境(DEBUG=False)静态文件加载失败求助

Django生产环境(DEBUG=False)静态文件加载失败解决方案

核心问题

Django在DEBUG=False时不会自动处理静态文件请求,必须依赖外部服务或正确的部署配置来提供静态文件,以下是针对性的解决步骤:


1. 配置生产环境的静态文件服务(以Vercel为例)

从你的ALLOWED_HOSTS来看,应用部署在Vercel上,需要通过vercel.json配置静态文件路由,让Vercel直接托管静态资源:
在项目根目录创建vercel.json,写入以下内容:

{
  "builds": [
    {
      "src": "sentiment_analysis/wsgi.py",
      "use": "@vercel/python",
      "config": { "maxLambdaSize": "15mb", "runtime": "python3.9" }
    },
    {
      "src": "staticfiles_build/static/**",
      "use": "@vercel/static"
    }
  ],
  "routes": [
    {
      "src": "/static/(.*)",
      "dest": "/staticfiles_build/static/$1"
    },
    {
      "src": "/(.*)",
      "dest": "sentiment_analysis/wsgi.py"
    }
  ]
}

2. 规范模板中静态文件的引用方式

确保模板里用Django的静态文件标签引用资源,不要硬编码路径:

{% load static %}
<link rel="stylesheet" href="{% static 'css/style.css' %}">
<script src="{% static 'js/main.js' %}"></script>

这种方式会自动匹配STATIC_URL配置,避免部署时路径不一致。

3. 修正STATICFILES_DIRS的语法错误

你的settings.py中STATICFILES_DIRS末尾多了逗号,导致它变成元组而非列表,虽然不影响collectstatic,但规范写法应为:

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]
# 或者用Path语法更简洁:
# STATICFILES_DIRS = [BASE_DIR / 'static']

4. 确保静态文件目录的权限正确

如果部署在Linux服务器上,需要保证Web服务器进程能读取静态文件目录:

sudo chmod -R 755 staticfiles_build/static
sudo chown -R www-data:www-data staticfiles_build/static

(www-data是Nginx/Apache的默认运行用户,根据你的服务器调整)

5. 不要用runserver运行生产环境

Django的runserver是开发服务器,性能和安全性都不适合生产环境,建议用Gunicorn/uWSGI配合反向代理:

  • 用Gunicorn启动应用:
gunicorn --workers=4 sentiment_analysis.wsgi:application
  • 配置Nginx处理静态文件请求(示例片段):
location /static/ {
    alias /path/to/your/project/staticfiles_build/static/;
    expires 30d;
}

location / {
    proxy_pass http://127.0.0.1:8000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 13:15:24