Джанго Грапелли, кажется, не может видеть все свои медиа файлы
У меня есть django 1.4 и grappelli 2.4.3, работающие на сервере Ubuntu, которые я просматриваю через сетевую систему Windows, когда работаю. Все отлично работает на сервере разработки, когда я рассматриваю его на компьютере с Ubuntu, используя RDP.
Соответствующие части settings.py:
STATIC_ROOT = os.path.join(os.path.dirname(__file__), '../03_static_files/collected/')
STATIC_URL = '/static/'
STATICFILES_DIRS = (
# Put strings here, like "/home/html/static" or "C:/www/django/static".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
os.path.join(os.path.dirname(__file__), '../03_static_files/'),
os.path.join(os.path.dirname(__file__), '../03_static_files/admin/'),
os.path.join(os.path.dirname(__file__), '../03_static_files/filebrowser/'),
os.path.join(os.path.dirname(__file__), '../03_static_files/grappelli/'),
)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# apps I added but didn't create
'south',
'grappelli',
'filebrowser',
'tinymce',
'haystack',
'gunicorn',
'debug_toolbar',
'taggit',
# Uncomment the next line to enable the admin:
'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
'django.contrib.admindocs',
# apps I created
'community',
'fts',
'guidance',
'news',
)
Я бегал collectstatic
но администратор сайта явно только частично отображается. Это определенно берет немного CSS, потому что некоторые элементы стилизованы. Но это не собирание других, потому что это выглядит беспорядком. Ни в моих журналах ошибок Nginx или Gunicorn нет никаких 404-х, и я могу загрузить все файлы css и js, если я укажу на них свой браузер напрямую.
Сайт администратора в настоящее время выглядит так в IE8 и IE9:
Все остальное на сайте работает нормально. Панель инструментов отладки Django говорит, что (рабочая) версия сервера разработки и производственная версия выше воспроизводят идентичные шаблоны. Обычный админ django отображается правильно, когда grappelli удален. Я пытался изменить мой файл конфигурации Nginx из
location /admin/media/ {
root /path/to/django/contrib;
}
в
location /admin/media/ {
root /path/to/grappelli;
}
без изменений. Может кто-нибудь сказать мне, где я иду не так?
4 ответа
Еще один выстрел в темноте: у вас случайно разные TEMPLATE_DIRS
настройки в разработке и производстве? Если посмотреть на скриншот, это не проблема со статическими файлами. Как уже отмечалось в diegueus9, стили grappelli css, похоже, загружены, но шаблоны являются стандартными для администратора Django.
Убедитесь, что статический носитель демонстративно присутствует.
проверьте все эти настройки...
STATIC_URL = '/static/'
STATIC_ROOT is something like os.path.join(PROJECT_PATH, "static"),
ADMIN_MEDIA_PREFIX = '/static/grappelli/' (or whatever your static directory is)
затем проверьте ваш
DEBUG = False or True ?
TEMPLATE_DEBUG = DEBUG
Если false, он будет обслуживать файлы с помощью nginx, но не будет
Другой пример...
STATIC_URL = '/static/'
STATIC_ROOT = '/home/foo/devel/static'
MEDIA_URL = '/media/'
MEDIA_ROOT = '/home/foo/devel/media'
# the following is deprecated but is it seems grappelly requires it
ADMIN_MEDIA_PREFIX = STATIC_URL + "grappelli/"
STATIC_FILES = ()
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
Похоже, что в Django 1.4.3 были внесены некоторые изменения в их статические файлы администратора, которые Grappelli еще не успел выполнить. Я не потратил время, чтобы проверить, является ли это проблемой вплоть до самого уровня шаблонов или статических файлов, но я пришел с обходным путем.
Вы можете либо понизить настройки Django до 1.4.2, пока они не исправят это, либо, как я сделал, временно отключить 'django.contrib.admin'
в INSTALLED_APPS
(просто прокомментируйте строку или что-нибудь более эффективное), запустите collectstatic -c
и затем снова включите админ. В любом случае, у вас будут правильные стили в развертывании Grappelli.
Мой лучший гость, не смотря на your settings.py, это то, что ваше приложение "grappelli" установлено после администратора django, а не раньше. Посмотри это предупреждение в документации по настройке
Ясно, что ваши css и js правильные, но плохо рендеризуются, потому что ваше приложение рендерит шаблоны django.contrib.admin.
Пожалуйста, убедитесь, что положить грапелли до:
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'grappelli',
'django.contrib.admin',
)