为什么我的 Django 管理没有加载 css?

Pra*_*ddy 8 css python django django-admin

我在 Django 中开发了一个 Web 应用程序并部署了它,然后我发现管理页面没有加载 CSS。我在本地服务器中使用 css 获取管理页面,但在部署它时却没有。 django-admin 图片

即使使用后 python manage.py collectstatic 它也不会加载 css。

这是我的settings.py代码

from pathlib import Path
import os

BASE_DIR = Path(__file__).resolve(strict=True).parent.parent
Run Code Online (Sandbox Code Playgroud)

这是静态文件链接部分:

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

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'first_app/media')
Run Code Online (Sandbox Code Playgroud)

即使在上面的代码之后我也无法弄清楚为什么它没有链接 css 部分

Django 版本:3.1 Python 版本:3.8.3

请有人帮我解决这个问题谢谢

Piz*_*her 9

如果您在生产中,则必须运行:

python manage.py collectstatic --noinput

但您还必须通过 Web 服务器提供静态文件。最简单的方法是使用 WhiteNoise:http://whitenoise.evans.io/en/stable/

这将与 Nginx、Heroku 等一起使用。所以这是一个非常灵活的解决方案。


Sim*_*jok 1

Django 不在生产中提供静态文件,您应该使用其他方法通过 apache2 或 nginx 来提供文件。如果您擅长或了解一些 docker 容器,这里有一个教程,解释如何部署 Django https://testdriven.io/blog/dockerizing-django-with-postgres-gunicorn-and-nginx/

upstream hello_django {
    server web:8000;
}

server {

    listen 80;

    location / {
        proxy_pass http://hello_django;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }

    location /staticfiles/ {
        alias /home/app/web/staticfiles/;
    }

}
Run Code Online (Sandbox Code Playgroud)

请在此处查看 django 文档https://docs.djangoproject.com/en/3.1/howto/static-files/deployment/

请检查这篇文章,了解没有 docker 容器的 apache2 https://programmingzen.com/serving-django-static-files-through-apache/