Überall in den django Doku steht, bzw. ist als Beispiel so, das Apps immer im url-root laufen.
Doch was ist, wenn man eine "index.fcgi" benutzt? Oder sogar in einem Verzeichniss steckt z.B.: "http://example.com/MyApp/index.fcgi"
Unter http://www.djangoproject.com/documentat ... ith-apache steht, das man in dem Falle Modrewrite nutzten sollte. Doch was ist, wenn das nicht zur Verfügung steht?
django und URLs...
Test es einfach mal aus, ich habe diese Problem nicht, verwende allerdings auch fcgi (und proxie per appache auf lighthttp->fcgi )
Warum du allerdings in einem appVerzeichnis eine index.fcgi haben solltest weiß ich nicht!
MfG apollo13
P.S.: Einen Anbieter der mir kein ModRewrite zur Verfügung nehme ich nicht^^
Warum du allerdings in einem appVerzeichnis eine index.fcgi haben solltest weiß ich nicht!
MfG apollo13
P.S.: Einen Anbieter der mir kein ModRewrite zur Verfügung nehme ich nicht^^
WSGI-Anwendungen kann man über SCRIPT_NAME und PATH_INFO über URL-Mapper wunderbar zusammenstöpseln. Auch das exzellente Routes bietet die Möglichkeit, eine Applikation in (virtuellen) Unterverzeichnissen zu verwenden und spuckt über routes.util.url_for() entsprechend erweiterte URLs aus.
Wenn in deinem Pfad dein Dispatcher-Script für FastCGI auftaucht, sieht das natürlich anders aus. Aber wie apollo13 schon andeutete: mod_rewrite oder äquivalentes ist ein Muss! Das braucht man heutzutage einfach um saubere Apps zu bauen. Besorg dir endlich ein gescheites Hosting-Environment! Das Geld ist es mehr als Wert. Python-Web-Apps sind nun mal kein Frickel-PHP, das man irgendwo auf'n Webspace schmeißt und überall läuft.
Wenn in deinem Pfad dein Dispatcher-Script für FastCGI auftaucht, sieht das natürlich anders aus. Aber wie apollo13 schon andeutete: mod_rewrite oder äquivalentes ist ein Muss! Das braucht man heutzutage einfach um saubere Apps zu bauen. Besorg dir endlich ein gescheites Hosting-Environment! Das Geld ist es mehr als Wert. Python-Web-Apps sind nun mal kein Frickel-PHP, das man irgendwo auf'n Webspace schmeißt und überall läuft.
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Das ist jetzt aber IMHO ein Schuss der nach hinten losgeht...Y0Gi hat geschrieben:Python-Web-Apps sind nun mal kein Frickel-PHP, das man irgendwo auf'n Webspace schmeißt und überall läuft.
Es hat nichts mit frickel zu tun... OK PHP ist frickel-Kram... Aber wäre es nicht schön, wenn Python-Web-Apps so flexibel sind, das man sie überall hinschmeißen kann und es läuft???
Die gute Nachricht ist allerdings, es geht, so halb!
Also ich hab mal ein Test gemacht. Eine django App liegt in http://localhost/django_test/index.py
Dabei nutzte ich das als CGI (siehe: http://code.djangoproject.com/ticket/2407 )
Nun habe ich u.a. folgenden view: (r'^_install/(.*?)$', 'PyLucid.install.views.index')
Wenn ich nun http://localhost/django_test/index.py/_install/ aufrufe geht es.
Der AddSlash Automatismus geht allerdings nicht. Also wenn ich nur http://localhost/django_test/index.py/_install benutzte (ohne Abschliessenden Slash) dann werde ich falsch redirectet nach: http://localhost/_install/
Das ist aber wohl das Problem, das überall zum root hin verlinkt wird. Wobei das natürlich sehr einfach ist, um URLs zusammen zu bauen. Um das im alten PyLucid zu umgeben, hatte ich extra eine Hilfsklasse gemacht, die für die URL Generierung zuständig war. Dabei was es egal wo PyLucid lag, ob mit index-Datei oder ganz ohne.
Ich würde jetzt doch gern wissen, ob mod-rewrite wirklich pflicht ist und es ohne einfach nicht geht, oder ob man doch irgendwie drum rum kommt. Ansonsten müsste ich mal prüfen ob GPcom rewrite hat oder installieren kann...
EDIT: Ha! Ich brauche mir keine sorgen zu machen. GPcom bietet mod_rewrite an
Such mal in den Googlegroups danach (dort steht wo ein Beitrag wie das geht), ich finde ihn leider gerade nicht.
MfG apollo13
P.S.: Gerade in der neuen dev-Version sind ein paar urlfeatures drin, du brauchst im Template zum Beispiel nicht mehr die Url wissen da sowas in die Richtung funzt:
MfG apollo13
P.S.: Gerade in der neuen dev-Version sind ein paar urlfeatures drin, du brauchst im Template zum Beispiel nicht mehr die Url wissen da sowas in die Richtung funzt:
Code: Alles auswählen
{% url myviews.view arg1,arg2 %}
Versuch vielleicht mal
für das Slash Append Problem.
Code: Alles auswählen
(r'^_install(.*?)/$', 'PyLucid.install.views.index')
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
@rafael: Das hilft nichts. Wenn ich ohne Abschließenden Slash die URL aufrufe, kommt wie Umleitung (Status: 301 MOVED PERMANENTLY)
Irgendwie geht das nicht wirklich...
Also ich hab in der URL ja u.a. das: (r'^_install/(.*?)$', 'PyLucid.install.views.index')
Nun packe ich mal in ein Template das: {% url PyLucid.install.views.index %}
Das Ergebnis des Tags ist leer, also nichts.
Füge ich z.B. einen Punkt ein, also so: {% url PyLucid.install.views.index . %}
kommt das raus: /_install/
Dabei ist es unabhängig davon, wie die Aufzurufende Adresse ist. Also ob es z.B. http://localhost/django_test/index.py/_install/ oder einfach nur http://localhost/_install/ ist.
Kurz um, das bringt irgendwie garnichts
Du meinst das hier: http://www.djangoproject.com/documentat ... lates/#urlapollo13 hat geschrieben:P.S.: Gerade in der neuen dev-Version sind ein paar urlfeatures drin, du brauchst im Template zum Beispiel nicht mehr die Url wissen da sowas in die Richtung funzt:Code: Alles auswählen
{% url myviews.view arg1,arg2 %}
Irgendwie geht das nicht wirklich...
Also ich hab in der URL ja u.a. das: (r'^_install/(.*?)$', 'PyLucid.install.views.index')
Nun packe ich mal in ein Template das: {% url PyLucid.install.views.index %}
Das Ergebnis des Tags ist leer, also nichts.
Füge ich z.B. einen Punkt ein, also so: {% url PyLucid.install.views.index . %}
kommt das raus: /_install/
Dabei ist es unabhängig davon, wie die Aufzurufende Adresse ist. Also ob es z.B. http://localhost/django_test/index.py/_install/ oder einfach nur http://localhost/_install/ ist.
Kurz um, das bringt irgendwie garnichts
sorry, ich weiß, dass es dir nichts bringt, ich wollte damit nur zeigen, dass das url-handling gerade verbessert, erweitert etc... wird.
Durch diesen Tag sind die urls nun ja nicht mehr statisch in den Templates drin, und ich denke jetzt kommt bald die Möglichkeit django in Unterverzeichnisen laufen zu lassen.
MfG apollo13
Durch diesen Tag sind die urls nun ja nicht mehr statisch in den Templates drin, und ich denke jetzt kommt bald die Möglichkeit django in Unterverzeichnisen laufen zu lassen.
MfG apollo13
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Also irgendwie bin ich noch ganz verwirrt, wie man URLs zusammen bauen kann...
Gibt es einen Weg, die Absolute URL Inkl. Domain in einem Template zu benutzten?
Mir würde da nur einfallen os.environ["wsgi.url_scheme"] und os.environ["HTTP_HOST"] in den Context zu packen und dann die URL zusammen zu bauen. Aber das muß doch auch einfacher gehen.
Sinnvoll ist das ganze z.B. wenn man einen Absoluten Link auf django.contrib.admin.urls setzten möchte. Oder zum Zentralen Index der Seite...
Gibt es einen Weg, die Absolute URL Inkl. Domain in einem Template zu benutzten?
Mir würde da nur einfallen os.environ["wsgi.url_scheme"] und os.environ["HTTP_HOST"] in den Context zu packen und dann die URL zusammen zu bauen. Aber das muß doch auch einfacher gehen.
Sinnvoll ist das ganze z.B. wenn man einen Absoluten Link auf django.contrib.admin.urls setzten möchte. Oder zum Zentralen Index der Seite...
Hab dazu zwar nix in der Doku gefunden, aber das hier funktioniert:
Code: Alles auswählen
{{ interner_link.get_absolute_url }}
Routes macht das auch. Kann Django das nicht?jens hat geschrieben:Mir würde da nur einfallen os.environ["wsgi.url_scheme"] und os.environ["HTTP_HOST"] in den Context zu packen und dann die URL zusammen zu bauen. Aber das muß doch auch einfacher gehen.