Пользовательские таблицы стилей в Django (1.3) admin - PullRequest
1 голос
/ 21 июня 2011

У меня есть несколько пользовательских таблиц стилей, которые переопределяют стили администратора по умолчанию. Они живут в myproject/static/admin/css-extended. Я переопределяю несколько стандартных шаблонов администрирования Django с помощью шаблонов, которые находятся в myproject / templates / admin.

В шаблонах ссылки на мою таблицу стилей: {{ STATIC_URL }}/admin/css-extended/[stylesheet].css.

Однако я не могу заставить пользовательские таблицы стилей проходить через них.

У меня есть следующие настройки, связанные с URL, в settings.py:

MEDIA_ROOT = os.path.join(PROJECT_DIR, 'media')
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(PROJECT_DIR, 'static')
STATIC_URL = '/static/'
ADMIN_MEDIA_PREFIX = '/static/admin/'

У меня есть следующие обработчики контекста шаблона:

'django.core.context_processors.media',
'django.core.context_processors.static',

Может кто-нибудь помочь, пожалуйста?

Спасибо

UPDATE:

Я подозреваю, что проблема связана с тем фактом, что мой ADMIN_MEDIA_PREFIX совпадает с первой частью расширенного URL-адреса css ('/static/admin'). Я предполагаю, что Django пытается найти каталог с именем «css-extended» в основном администраторе, а не в самом проекте. Но как мне обойти это?

Ответы [ 2 ]

1 голос
/ 21 июня 2011

Хорошо, теперь я думаю, что знаю, что здесь происходит. Надеюсь, это уточнит:

STATIC_ROOT используется только командой управления "collectstatic", чтобы выяснить, куда записывать статические файлы, которые она собирает.

STATIC_URL используется сервером разработки для определения URL-адреса, по которому будут передаваться статические файлы.

STATICFILES_DIRS , который вы не установили, используется и сервером dev, и командой управления collectstatic для определения местоположения статических файлов для обслуживания. В случае сервера разработки файлы обслуживаются непосредственно на месте. В случае команды управления файлы собираются и копируются в STATIC_ROOT.

[Примечание: здесь есть соглашение - если у вас есть / static подкаталоги в ваших приложениях (не в вашем проекте), они будут выбраны вместе со всем, что явно определено в STATICFILES_DIRS.]

Вам просто нужно добавить следующее в settings.py:

STATICFILES_DIRS = {
        '/absolute/path/to/myproject/static/',
}
1 голос
/ 21 июня 2011

У вас есть эта проблема в вашей локальной среде разработчика (с runserver)?Если это так, у вас есть следующее в вашем urls.py?

from django.contrib.staticfiles.urls import staticfiles_urlpatterns

# ... the rest of your URLconf goes here ...

urlpatterns += staticfiles_urlpatterns()

Подробнее читайте в Django Docs

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...