Почему шаблон администратора django не загружается

С тех пор как я начал использовать Django, я столкнулся с некоторыми нелепыми проблемами. Недавно, когда я начинаю новый проект и запускаю его на сервере, CSS админки Django не загружается. Последний проект, который я запускал на сервере, через некоторое время был в порядке, там был настоящий шаблон админки Django, CSS загружался и все работало. Но в этот раз опять возникла та же проблема, и я не знаю, как ее решить, потому что проект здесь фото сырой, без специального кода. Я не знаю, является ли это проблемой Chrome или нет, но я пробовал это на других браузерах, и это было то же самое.

Я буду рад, если вы сможете мне помочь

Если эта проблема возникает локально, то просто измените файл 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)

Тогда вам придется использовать сторонний сервер медиафайлов (CDN), например AWS S3, или вы можете передавать ваши css, js или медиафайлы с вашего сервера Django. Если вы не хотите использовать AWS S3, то вы можете либо отправлять css/js с помощью вашего приложения django (что не идеально), либо использовать 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, убедитесь, что ваше приложение имеет к ним доступ

Если вы хотите отправить js/css из вашего приложения django (лучше не делать этого в production) Тогда

Для установки whitenoise

pip install whitenoise

В файле настроек

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

Вы должны установить некоторые настройки развертывания Django по этой ссылке : Контрольный список развертывания Django https://docs.djangoproject.com/en/4.0/howto/deployment/checklist/

ответ, который я нашел - изменить STATIC_URL = 'static/' в settings.py на STATIC_URL = '/static/'. Всего один '/' может изменить весь внешний вид вашего администратора. Эта проблема может возникнуть не у всех, но, выполняя код в Pycharm, я решал ее так долго.

Вернуться на верх