Seite 1 von 1

Django Projekt im Unterverzeichnis

Verfasst: Freitag 5. Dezember 2008, 16:07
von lunas
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

Verfasst: Freitag 5. Dezember 2008, 16:26
von Dauerbaustelle
Hä? Das managed dein Webserver ;)
Gib ihm einfach den Pfad.

Verfasst: Freitag 5. Dezember 2008, 17:06
von lunas
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...

Verfasst: Freitag 5. Dezember 2008, 17:21
von Dauerbaustelle
Du musst einfach deinem Webserver sagen, dass er nicht mehr nach /altes_dir/ sondern nach /altes_dir/subdir/ weiterleiten soll...?

Verfasst: Freitag 5. Dezember 2008, 17:27
von apollo13
Warum sollte man absolute links einbauen? dafür gibt es {% url %}, und wenn du das nicht verwendest, bleibt nichts anderes als neuschreiben übrig.

Verfasst: Freitag 5. Dezember 2008, 17:28
von lunas
Aber in /altes_dir/ was ja wie schon erwähnt das Rootdir "/" ist, sind anderen Dateien, die durchaus noch erreicht werden sollen...

Verfasst: Freitag 5. Dezember 2008, 17:55
von Dauerbaustelle
Dann erzähl doch mal, was für nen Webserver du verwendest und welche Art, pythonzeugs laufen zu lassen.

Verfasst: Samstag 6. Dezember 2008, 01:13
von lunas
Apache und wie gesagt ein Django Projekt...

Verfasst: Samstag 6. Dezember 2008, 12:03
von sma
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

Verfasst: Samstag 6. Dezember 2008, 12:26
von Dauerbaustelle
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

Verfasst: Samstag 6. Dezember 2008, 13:02
von sma
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

Verfasst: Samstag 6. Dezember 2008, 13:47
von lunas
Ja, Stefan hat mich richtig verstanden.

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


Lg,
lunas