为什么django admin静态文件无法加载

fzsnzjdm  于 2023-06-07  发布在  Go
关注(0)|答案(2)|浏览(185)

自从我开始使用Django以来,我一直在解决一些荒谬的问题。最近,当我启动一个新项目并在服务器上运行它时,Django的管理CSS没有加载。我在服务器上运行的最后一个项目,过了一段时间就好了,真实的的Django管理模板在那里,CSS加载完毕,它正在工作。但是这次同样的问题又发生了,我不知道如何解决它,因为项目here is the photo是原始的,没有特殊的代码。我不知道这是不是Chrome的问题,但我在其他浏览器上试过,结果是一样的。
如果你能帮助我,我会很高兴

rsaldnfx

rsaldnfx1#

我找到的答案是将www.example.com中的STATIC_URL = 'static/'更改settings.py为STATIC_URL = '/static/'。只有一个“/”可能会改变整个管理员外观。这个问题可能不会发生在每个人身上,但在Pycharm中运行代码,我已经解决了很长时间。

wljmcqd8

wljmcqd82#

如果此问题发生在本地,则只需更改您的settings.py

DEBUG = True
#...
#...
STATIC_ROOT = YOUR_STATIC_ROOT_DIRECTORY

然后运行collectstatic,确保您有一个正确的STATIC_ROOT目录,该目录也在settings.py文件中

python manage.py collectstatic

如果您已经在生产服务器上部署了应用程序,那么您必须遵循某些步骤来获取样式表和JavaScript文件。

首先在你的urls.py中你需要添加以下代码

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + \
               static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

如果你不想使用AWS S3,那么你可以使用django应用程序发送css/js(这不是理想的做法),或者你可以使用nginx或apachee发送css/js。

Nginx发送js/css你必须添加一个静态和媒体文件根,可以被你的django应用程序访问,我通常使用/var/www/从任何Linux服务器提供静态和媒体

STATIC_ROOT = '/var/www/static'
MEDIA_ROOT = 'var/www/media'

那么如果你用的是nginx

server {
    server_name domainname.com;

    access_log off;

    location /static/ {
        root /var/www/static;
    }
    location /media/ {
        root /var/www/media;
    }

如果它仍然不工作,那么你的django应用程序可能无法使用给定的static_root和media目录,请确保你的应用程序可以访问它们
如果你想从你的django应用程序发送js/css(最好不要在生产中这样做)
安装whitenoise

pip install whitenoise

在您的设置文件中

MIDDLEWARE = [
  'django.middleware.security.SecurityMiddleware',
  'whitenoise.middleware.WhiteNoiseMiddleware',
  # ...
]

相关问题