nginx 不提供 Django 管理静态文件

nginx does not serve the Django admin statics file

我在 DigitalOcean 上有一个正在生产中的 django 项目。 静态文件可以很好地用于应用程序本身,但不适用于管理部分

settings.py

STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"),
)

STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')

/etc/nginx/sites-available/my-project

server {
        ...

        location /static/ {
                root /home/username/my-project;
        }

        location /media {
                autoindex on;
                alias /home/username/my-project/media/;
        }

        location / {
                include proxy_params;
                proxy_pass http://unix:/run/gunicorn.sock;
        }
}

当我检查控制台是否收集了静态管理文件时

admin  css  images  js

cd 管理员

css  fonts  img  js

编辑

让我们玩转 URL

在这里,我尝试在我的应用程序的 public 部分显示我的 css。

my-domain.name/static/css/stylesheet.css

文件送达良好

现在我正在尝试显示 Django 管理应用程序 css

my-domain.name/static/admin/css/dashboard.css

页面returns一个404代码

我不知道这是否与我的问题有关,但我修改了管理员的url。

path('ez4y5ebGgTkfanLYHdjbX33pQMyX/', admin.site.urls), # the admin url is a long sequence of numeric alpha characters

你 运行 collectstatic 了吗?

django.contrib.staticfiles 提供了一个方便的管理命令,用于将静态文件收集到一个目录中,以便您可以轻松地在生产环境中使用它们。

改变你的STATIC_ROOT

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

和运行收集静态

python manage.py collectstatic  

这会将静态文件夹中的所有文件复制到 STATIC_ROOT 目录中。