Django Apache / mod_python Admin CSS не отображается с таблицами администратора - PullRequest
16 голосов
/ 26 января 2009

У меня Windows XP / Django / apache / mod_python работает на локальном хосте. Все части работают за исключением административного CSS, а не рендеринга. Админ работает, но без форматирования HTML. Я сделал дополнения в:

settings.py

  INSTALLED_APPS
  'django.contrib.admin',

urls.py

  from django.contrib import admin
  admin.autodiscover()
  (r'^admin/(.*)', admin.site.root),

conf/http.conf

  <Location "/"> 
    SetHandler python-program
    PythonPath "['C:/django'] + sys.path"
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE mysite.settings
    PythonDebug On
  </Location>

  <Location "/cpssite/"> 
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE myapplication.settings
    PythonInterpreter /myapplication
    PythonDebug On
  </Location>

Я в тупике. Есть ли еще код, который я должен был добавить куда-нибудь?

Ответы [ 5 ]

27 голосов
/ 26 января 2009

Существует ли ваша ADMIN_MEDIA_PREFIX? Отличается ли он от MEDIA_URL? Вы включили косую черту? Apache обрабатывается для правильного обслуживания административного носителя?

Конфигурация Django по умолчанию имеет административный носитель, расположенный по адресу {Django install dir} / contrib / admin / media. ADMIN_MEDIA_PREFIX по умолчанию / media /. Так что вам нужно добавить что-то подобное в вашу конфигурацию Apache:

Alias /media/ /path/to/django/contrib/admin/media/

Это сообщит Apache, что запросы на mysite.com/media/css/whwhat.css означают обслуживание /path/to/django/contrib/admin/media/css/whever.css, что должно решить вашу проблему.

7 голосов
/ 06 февраля 2009

Раньше у меня была такая же проблема, и следующая запись в http.conf отлично работала со мной:

<Directory "Path-to-python/Lib/site-packages/django/contrib/admin/media/"> 
    AllowOverride None 
    Options None 
    Order allow,deny 
    Allow from all 
</Directory> 

Alias /media/ "Path-to-Python/Lib/site-packages/django/contrib/admin/media/"

<Location "/mysite/">
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE mysite.settings
    PythonOption django.root /mysite
    PythonInterpreter mysite
    PythonDebug On
    PythonPath "['C:/Python/Django/apps'] + sys.path"
</Location>
2 голосов
/ 08 апреля 2009

Вот моя специфичная для django конфигурация apache. Обратите внимание, что django обрабатывает каждый входящий URL-адрес сайта (location /), за исключением медиа, где он отключен, а данные поступают из медиа-каталога django.

<Location "/">
  SetHandler python-program
  PythonHandler django.core.handlers.modpython
  SetEnv DJANGO_SETTINGS_MODULE mysite.settings
  #PythonOption django.root /
  PythonDebug On
  PythonPath "['e:/dj'] + sys.path"
</Location>

Alias /media  e:/dj/django-trunk/django/contrib/admin/media/
<Location "/media">
  SetHandler None
</Location>
1 голос
/ 18 августа 2012

Поскольку этот вопрос давно задан, это может быть неуместным ответом, но я помещаю эту информацию, чтобы помочь любому, кто случайно наткнется здесь, так же как и я. Начиная с версии 1.4 настройка ADMIN_MEDIA_PREFIX устарела. Способы обслуживания статических и мультимедийных файлов с версией> = 1.4 описаны здесь

https://docs.djangoproject.com/en/dev/releases/1.4/#django-contrib-admin

https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/modwsgi/#serving-files

https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/modwsgi/#serving-the-admin-files

Обычно его можно настроить в 4 этапа -

  1. Установите STATIC_ROOT, чтобы он указывал на каталог, который будет обслуживать все статические файлы вашего сайта
  2. Установить STATIC_URL, для которого должен обслуживаться статический контент
  3. Запустить manage.py collectstatic
  4. Настройка вашего веб-сервера для обслуживания запросов на STATIC_URL от STATIC_ROOT

То же самое для медиа-файлов

1 голос
/ 23 ноября 2009

Если вы не хотите, чтобы admin media использовала каталог / media, вы можете указать ADMIN_MEDIA_PREFIX = 'admin_media', а затем создать ссылку / псевдоним с вашего веб-сервера, который перенаправляет вызовы / admin_media / на / usr / share / pyshared / django / contrib / admin / media (в зависимости от вашей ОС) для вашего рабочего сервера ...

...