Notion Blog
知行合一1 分钟阅读

Django 生产部署添加admin管理后台样式

Django在生产部署都会关闭 DEBUG = False,这样会导致管理后台样式丢失。

在Django生产环境中将 `DEBUG` 设置为 `False` 时,Django默认不再自动处理静态文件(如CSS、JavaScript和图片等),这包括管理后台(admin site)所依赖的样式和脚本。在开发环境下,当你设置 `DEBUG=True` 时,Django的`django.contrib.staticfiles`应用会处理这些静态文件,使得后台界面能够正确显示样式。

在settings配置文件中添加静态文件相关的配置

收集Django静态文件

STATIC_URL = 'static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

在你的Django项目目录下运行以下命令,将所有静态文件收集到STATIC_ROOT指定的位置:

python manage.py collectstatic --noinput

确认ALLOWED_HOSTS确保在settings.py中的 `ALLOWED_HOSTS` 列表包含了生产服务器的实际域名或IP地址,否则即便静态文件服务正常,也可能因为请求被Django拒绝而无法加载。

nginx配置

假设你的admin静态文件在/path/to/static/admin/,在Nginx的/etc/nginx/sites-available/your_domain.conf添加以下内容:

server {
    listen 80;
    server_name your.domain.com;   # 替换为你的域名

    location / {
        include uwsgi_params;
         uwsgi_pass 0.0.0.0:8001; #与uwsgi中ip:端口相同
    }

    location /static/admin/ {    # Django管理后台静态资源
        alias /path/to/static/admin/;
        expires 30d;            # 可选,设置静态文件缓存过期时间
    }

    location /static/ {          # 其他静态资源
        alias /path/to/your/project/static/;
        expires 30d;
    }
}

启用Nginx配置

./nginx -t                 # 检查配置是否正确
./nginx -s reload          # 重启Nginx以应用新的配置

优化代码

只有生产才启用,避免开发环境不能打开问题。

# 生产环境才启用,开发环境可注释掉
if not DEBUG:
    STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage'  # 使用Manifest存储以支持缓存 busting

有关使用上的问题,欢迎您在底部评论区留言,一起交流~

读者评论

评论会同步写入该文在 Notion 中的页面底部(与正文同页,便于管理)。

0/1500

暂无评论,欢迎抢沙发。