Джанго Грапелли, кажется, не может видеть все свои медиа файлы

У меня есть 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:

наполовину визуализированный grappelli

Все остальное на сайте работает нормально. Панель инструментов отладки 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',
)
Другие вопросы по тегам