nginx不提供Django管理静态文件

问题描述 投票:2回答:1

我在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;
        }
}

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

  • cd my-project / staticfiles
  • ls
admin  css  images  js

cd管理员

css  fonts  img  js

编辑

让我们玩URL

在这里,我尝试在我的应用程序的公开部分显示我的CSS。

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

文件提供了很好的服务

现在我正在尝试显示Django admin应用css

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

页面返回404代码

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

path('ez4y5ebGgTkfanLYHdjbX33pQMyX/', admin.site.urls), # the admin url is a long sequence of numeric alpha characters
python-3.x nginx django-3.0
1个回答
2
投票

您是否运行collectstatic吗?

[django.contrib.staticfiles提供了一个方便管理命令,用于在单个目录中收集静态文件,因此您可以在生产中轻松提供它们。

更改您的STATIC_ROOT

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

并运行收集静态

python manage.py collectstatic  

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

© www.soinside.com 2019 - 2024. All rights reserved.