В интерфейсе администратора Django отсутствует стилизация css в продакшене
Пользовательский интерфейс работает хорошо, и все CSS стили и статические файлы обслуживаются правильно, но в интерфейсе администратора отсутствует CSS стили. Я просмотрел похожие сообщения, но в тех сообщениях у людей была проблема как с пользовательским, так и с администраторским интерфейсом. У меня проблема только с интерфейсом администратора.
Пожалуйста, посмотрите мои настройки статического файла ниже из settings.py
:
STATIC_URL = '/static/'
#Location of static files
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'), ]
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
А это моя конфигурация nginx:
server {
listen 80;
server_name MY_SERVER_IP;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/MYUSERNAME/myproject;
}
location /media/ {
root /home/MYUSERNAME/myproject;
}
Я уже выполнил python manage.py collectstatic
на сервере и получил следующее сообщение:
0 static files copied to '/home/MYUSERNAME/myproject/staticfiles', 255 unmodified.
После этого я перезапустил nginx, а также попробовал очистить кэш браузера, но проблема сохранилась.
Попробуйте изменить STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
на:
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
Затем повторно запустите python manage.py collectstatic
. Это сработало в прошлом для некоторых людей
Попробуйте, пожалуйста, выполнить следующие шаги и сообщите мне, работает ли это или нет?
Примените следующие изменения в файле settings.py:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
Удалите следующую строку из файла settings.py:
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'), ]
Выполните следующую команду в production:
python manage.py collectstatic
Обновите файл nginx, как показано ниже:
server {
listen 80;
server_name MY_SERVER_IP;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
autoindex on;
autoindex_exact_size off;
root /home/MYUSERNAME/myproject;
}
location /media/ {
autoindex on;
autoindex_exact_size off;
root /home/MYUSERNAME/myproject;
}
}
Пояснения:
STATIC_ROOT
- это папка, в которой будут храниться статические файлы после использованияpython manage.py collectstatic
.
STATICFILES_DIRS
- это список папок, в которых django будет искать дополнительные статические файлы, помимо папкиstatic
каждого установленного приложения.
В данном случае нас беспокоили CSS файлы, связанные с администратором, поэтому мы используем STATIC_ROOT
вместо STATICFILES_DIRS
Попробуйте передать псевдоним статическому местоположению в nginx, например, так:
location /static/ {
alias /home/MYUSERNAME/myproject/staticfiles/
}
Не забудьте перезапустить nginx после этого.