Django Projekt im Unterverzeichnis

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
lunas
User
Beiträge: 87
Registriert: Samstag 2. Dezember 2006, 10:56

Hallo,

hat jemand eine Idee wie man ein Django Projekt in einem Unterverzeichnis eines Webservers installieren kann? Das Projekt enthält jede Menge Template-Dateien, die sich absolute auf das Webserver Rootverzeichnis beziehen (sprich: die links à la <a href="/foo.html">foo</a> enthalten). Ich möchte das Projekt gerne eine Verzeichnisebene tiefer rücken ohne viel zu ändern, und v.a. ohne sämtliche links anfassen zu müssen...


Lg,
lunas
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Hä? Das managed dein Webserver ;)
Gib ihm einfach den Pfad.
lunas
User
Beiträge: 87
Registriert: Samstag 2. Dezember 2006, 10:56

Hmm... vielleicht habe ich mich etwas unverständlich ausgedrückt. Ich versuche es noch mal:

Es war einmal ein Django Projekt, das direkt im Rootverzeichnis des Webservers saß. Links in den Templates waren absolut und alles lief wie geschmiert.

Aus welchen Gründen auch immer wurde entschieden das Django Projekt nach /subdir/ zu verschieben. Links, die vorher nach /hello zeigten lieferten nun einen page not found error.

Die Preisfrage ist nun: Wie kann ich das Projekt ohne großen Aufwand wieder flott machen. Ich kann mir nicht vorstellen, dass jedes Django Projekt dafür geschrieben ist im Rootverzeichnis zu leben oder, dass das Unterverzeichnis immer Bestandteil eines jeden links sein muss...
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Du musst einfach deinem Webserver sagen, dass er nicht mehr nach /altes_dir/ sondern nach /altes_dir/subdir/ weiterleiten soll...?
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Warum sollte man absolute links einbauen? dafür gibt es {% url %}, und wenn du das nicht verwendest, bleibt nichts anderes als neuschreiben übrig.
lunas
User
Beiträge: 87
Registriert: Samstag 2. Dezember 2006, 10:56

Aber in /altes_dir/ was ja wie schon erwähnt das Rootdir "/" ist, sind anderen Dateien, die durchaus noch erreicht werden sollen...
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Dann erzähl doch mal, was für nen Webserver du verwendest und welche Art, pythonzeugs laufen zu lassen.
lunas
User
Beiträge: 87
Registriert: Samstag 2. Dezember 2006, 10:56

Apache und wie gesagt ein Django Projekt...
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Ich kann nur apollo13 beipflichten: Konsequent das `url`-Tag benutzen und dann reicht es, die `urls.py`-Datei anzupassen. Einen anderen Weg sehe ich nicht.

Man könnte zwar mittels middleware das erzeugte HTML parsen, links erkennen und diese dann umschreiben, doch das erscheint mir noch aufwendiger und ist ein übler Hack.

Stefan
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Ist es nicht so, dass er seine urls, z.B. /foo/bar/2/ in urls.py angibt und seinen Apache z.B. /myblog/ via mod_python oder wsgi weiterleiten lässt? Dann ist es doch egal, ob das Projekt unter /foo/bar/2/ erreichbar sein soll oder /myblog/foo/bar/2/... oder? Das muss er einfach nur dem Apache sagen O__o
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Ich hatte das so verstanden, dass im HTML etwas wie <a href="/foo"> steht, er aber ein <a href="/bar/foo"> haben will, weil er jetzt alles unter "/bar" erreichen will und nicht mehr unter "/". Und er wollte in Templates nicht alles durchändern, was aber IMHO unvermeidlich ist, wenn man nicht hacken will.

Stefan
lunas
User
Beiträge: 87
Registriert: Samstag 2. Dezember 2006, 10:56

Ja, Stefan hat mich richtig verstanden.

Den url tag kannte ich noch gar nicht... Vielen Dank für die Infos.


Lg,
lunas
Antworten