Почему шаблон администратора 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, я решал ее так долго.