16 Stimmen

Django Apache/mod_python Admin CSS erscheint nicht mit Admin-Tabellen

Ich habe Windows XP/Django/apache/mod_python arbeiten auf localhost. Alle Teile funktionieren mit Ausnahme des Admin-CSS, das nicht gerendert wird. Der Admin funktioniert, aber keine html-Formatierung. Ich habe Ergänzungen gemacht in:

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>

Ich bin verblüfft. Gibt es mehr Code, den ich irgendwo hinzugefügt haben sollte?

27voto

Harper Shelby Punkte 16295

Ist Ihr ADMIN_MEDIA_PREFIX vorhanden? Unterscheidet er sich von MEDIA_URL? Haben Sie den abschließenden Schrägstrich eingefügt? Wird der Apache so behandelt, dass er die Verwaltungsmedien korrekt bereitstellt?

In der Standardkonfiguration von Django befinden sich die Admin-Medien unter {Django-Installationsverzeichnis}/contrib/admin/media. ADMIN_MEDIA_PREFIX steht standardmäßig auf /media/. Sie müssen also etwas wie das Folgende zu Ihrer Apache-Konfiguration hinzufügen:

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

Dies teilt dem Apache mit, dass Anfragen nach mysite.com/media/css/whatever.css bedeuten, dass /path/to/django/contrib/admin/media/css/whatever.css ausgeliefert werden soll, was Ihr Problem lösen sollte.

7voto

Helmut Punkte 233

Ich hatte früher das gleiche Problem und der folgende Eintrag in der http.conf hat bei mir gut funktioniert:

<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>

2voto

fastmultiplication Punkte 2873

Hier ist meine django-spezifische Apache-Konfiguration. Beachten Sie, dass django jede eingehende URL zur Website (Standort /) behandelt, außer media, wo es deaktiviert ist, und die Daten aus dem media-Verzeichnis von django serviert werden.

<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>

1voto

duncan Punkte 11

Wenn Sie nicht möchten, dass admin media das /media-Verzeichnis verwendet, können Sie ADMIN_MEDIA_PREFIX = 'admin_media' angeben und dann einen Link/Alias von Ihrem Webserver erstellen, der Aufrufe zu /admin_media/ auf /usr/share/pyshared/django/contrib/admin/media (abhängig von Ihrem Betriebssystem) für Ihren Produktionsserver umleitet...

1voto

Swapnil Punkte 387

Da die Frage schon lange zurückliegt, ist dies vielleicht keine relevante Antwort, aber ich stelle diese Informationen ein, um jedem zu helfen, der zufällig hierher stolpert, genau wie ich. Seit der Version 1.4 ist die Einstellung ADMIN_MEDIA_PREFIX veraltet. Die Möglichkeiten, statische und Mediendateien mit Version >= 1.4 bereitzustellen, sind hier beschrieben

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

Grundsätzlich kann es in 4 Schritten eingerichtet werden -

  1. Setzen Sie STATIC_ROOT auf ein Verzeichnis, das alle statischen Dateien Ihrer Website enthält
  2. Festlegen der STATIC_URL, für die statische Inhalte bereitgestellt werden sollen
  3. manage.py collectstatic ausführen
  4. Konfigurieren Sie Ihren Webserver so, dass er Anfragen für STATIC_URL von STATIC_ROOT aus bedient

Dasselbe gilt für Mediendateien

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X