2

我在 DigitalOcean 上有一个 django 项目正在生产中。静态文件非常适合应用程序本身,但不适用于管理部分

设置.py

STATIC_URL = '/static/'

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

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

/etc/nginx/sites-available/我的项目

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 我的项目/静态文件
  • ls
admin  css  images  js

光盘管理员

css  fonts  img  js

编辑

让我们玩 URL

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

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

该文件服务良好

现在我正在尝试显示 Django 管理应用程序 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
4

1 回答 1

2

你跑了 collectstatic吗?

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

更改您的STATIC_ROOT

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

并运行收集静态

python manage.py collectstatic  

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

于 2020-02-06T13:51:19.097 回答