[Django] Statische Inhalte / Bilder anzeigen mal wieder...

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
idioglossiahh
User
Beiträge: 8
Registriert: Donnerstag 25. Oktober 2007, 10:50
Wohnort: Hamburg

Montag 19. November 2007, 22:02

Hi zusammen,
Das Problem wurde schon an vielerlei Ecken diskutiert, doch hat mir bisher nichts weitergeholfen.

Statische Inhalte wie Bilder und CSS Dateien ließen sich auf dem Django Development Server bestens anzeigen/laden (wie hier beschrieben).

Nun ist meine Website fertig und ich möchte Django auf Apache mit mod_python laufen lassen. Funktioniert auch, nur werden eben keine Bilder geladen oder CSS Dateien. Ich bin so vorgegangen, wie hier angegeben.

Diese Zeile habe ich aus meiner URL_CONF entfernt:

Code: Alles auswählen

(r'^site_media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': '/path/to/media', 'show_indexes': True}),
In die httpd.conf habe ich dies eingefügt:

Code: Alles auswählen

<Location "/">
    SetHandler python-program
    PythonPath "['/home/websites'] + sys.path"
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE musicreviews.settings
    SetEnv PYTHON_EGG_CACHE /tmp/egg-cache
    PythonDebug On
</Location>

<Location "/static/">
    SetHandler None
</Location>

<LocationMatch "\.(jpg|gif|png)$">
    SetHandler None
</LocationMatch>
Wie ich das verstanden habe, soll die oben genannte Konfiguration in der httpd.conf veranlassen, dass alle Dateien, die sich in "static" befinden und alle URLS mit einem jpg/gif/png am Ende NICHT über Python laufen sollen, sondern vom Apache Server behandelt werden. Damit der Apache die Datein im "static" Verzeichnis auch finden kann, hab ich noch dies in die httpd.conf eingefügt:

Code: Alles auswählen

DocumentRoot /home/websites/myproject/static
Im Verzeichnis "static" innerhalb meines Projektordners befindet sich nun ein Unterverzeichnis "images" in welchem sich ein eine jpg Datei befindet (test.jpg).

Rufe ich jetzt die URL www.mydomain.de/images/test.jpg auf, so wird die "Page not found (404)" Seite von Django angezeigt. Dabei sollten doch z.B. jpegs gar nicht mehr von Python behandelt werden?

Hat jemand einen guten Tipp? :-)
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Montag 19. November 2007, 22:46

Hi,

Sollte deine URL nicht www.mydomain.de/static/images/test.jpg lauten, wenn du in der Konfiguration definierst, dass alles, was mit "/static" beginnt, zu Apache gehen soll?

Andererseits: In deinem Develop-Server hast du site_media benutzt, also solltest du doch

Code: Alles auswählen

<Location "/site_media">
    SetHandler None
</Location>
und die URL www.mydomain.de/site_media/images/test.jpg benutzen, oder?

Stefan
idioglossiahh
User
Beiträge: 8
Registriert: Donnerstag 25. Oktober 2007, 10:50
Wohnort: Hamburg

Dienstag 20. November 2007, 11:28

Hallo Stefan! :)
sma hat geschrieben: Sollte deine URL nicht www.mydomain.de/static/images/test.jpg lauten, wenn du in der Konfiguration definierst, dass alles, was mit "/static" beginnt, zu Apache gehen soll?
Sorry, das hatte ich falsch geschrieben. Ich hab das auch so gemacht, aber es gibt keine Besserung.
sma hat geschrieben: Andererseits: In deinem Develop-Server hast du site_media benutzt, also solltest du doch

Code: Alles auswählen

<Location "/site_media">
    SetHandler None
</Location>
und die URL www.mydomain.de/site_media/images/test.jpg benutzen, oder?
Wieder mein Fehler. Sorry, es war spät und ich hatte schon lange gearbeitet. :( Ich hatte die Zeile aus der Django Doku kopiert. In meinem Projekt liegen die Bilder aber unter /home/websites/mydomain/static/images.

Die DocumentRoot in der httpd.conf ist jetzt auf "/home/websites/mydomain" gesetzt (was eigentlich auch nicht so dolle ist, weil jetzt meine Python Dateien im Document Root liegen.

Es gibt immer noch den Page Not Found (404) Error von Django. Obwohl Django Dateien innerhalb des Verzeichnisses "static" gar nicht mehr verarbeiten dürfte... :-(
Antworten