[bottle] Routing

Django, Flask, Bottle, WSGI, CGI…
Antworten
Benutzeravatar
lynadge
User
Beiträge: 112
Registriert: Sonntag 4. April 2010, 10:17

Hallo Leute.

Ich komme mit dem Routing von bottle nicht so ganz klar.

Das Prinzip habe ich verstanden, daran sollte es nicht liegen.

Eine Index route kann ich erstellen, nur halt keine weiteren.

Gehen wir mal vom Beispielcode aus:

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: utf-8 -*-
# index.py

from flup.server.fcgi import WSGIServer
from bottle import route, default_app

@route('/')
def index():
	return '<a href="hello">Go to Hello World page</a>'

@route('/hello')
def hello():
	return 'Hello World!'

WSGIServer(default_app()).run()
Die index() Funktion wird ohne Probleme aufgerufen, nur halt leider nicht die hello() Funktion. Die URL die ich dafür benutze ist: "py.barfooz.de/bottle".

Soll er also hello() aufrufen müsste die URL ja "py.barfooz.de/bottle/hello" heißen, da bekomme ich aber logischerweise vom Server ein "file not found".

Muss da noch etwas in der .htaccess geschraubt werden? Oder habe ich den Sinn vom Routing nicht verstanden?

Ich hoffe Ihr könnt mir da weiterhelfen. :)

Gruß, deadshox
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

probier' mal als Route

Code: Alles auswählen

@route('hello')
Gruß, noisefloor
Benutzeravatar
Defnull
User
Beiträge: 778
Registriert: Donnerstag 18. Juni 2009, 22:09
Wohnort: Göttingen
Kontaktdaten:

Kommt die 404 Fehlermeldung von Bottle oder von deinem webserver, hinter dem Bottle läuft?
Bottle: Micro Web Framework + Development Blog
Benutzeravatar
lynadge
User
Beiträge: 112
Registriert: Sonntag 4. April 2010, 10:17

Ich geh mal von aus das sie vom Server kommt, da ich auch nicht weiß wie die von bottle aussieht.

Hier mal der Link zum nachschauen: http://py.barfooz.de/bottle/

Ein ganz normales "Not found".

@noisefloor, hat leider auch nicht das gewünschte Ergebnis geliefert.
Benutzeravatar
lynadge
User
Beiträge: 112
Registriert: Sonntag 4. April 2010, 10:17

Keine Idee?
BlackJack

@deadshox: Hast Du den Webserver denn so konfiguriert, dass alles was mit `http://py.barfooz.de/bottle/` beginnt auch an `bottle` geht, und wird *nur* exakt diese URL an Bottle umgeleitet?
Benutzeravatar
lynadge
User
Beiträge: 112
Registriert: Sonntag 4. April 2010, 10:17

Am Webserver wurde nichts Konfiguriert. Er ist für aber FastCGI ausgelegt. Ich denke es kann einfach so benutzt werden ohne etwas Konfigurieren zu müssen?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Nun, du solltest schon ein ``ScriptAlias`` setzen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Defnull
User
Beiträge: 778
Registriert: Donnerstag 18. Juni 2009, 22:09
Wohnort: Göttingen
Kontaktdaten:

deadshox hat geschrieben:Am Webserver wurde nichts Konfiguriert. Er ist für aber FastCGI ausgelegt. Ich denke es kann einfach so benutzt werden ohne etwas Konfigurieren zu müssen?
Offensichtlich nicht. Der 404 Fehler kommt von Apache. Bottle bekommt den request erst gar nicht. Wahrscheinlich fehlt so so eine Zeile:

Code: Alles auswählen

ScriptAliasMatch ^(/.*)$ /some/path/to/app/myapp.py$1
Fastcgi ist aber generell nicht zu empfehlen. mod_wsgi ist eine deutlich bessere Wahl.
Bottle: Micro Web Framework + Development Blog
Benutzeravatar
lynadge
User
Beiträge: 112
Registriert: Sonntag 4. April 2010, 10:17

Der ScriptAlias sollte für alle Verzeichnisse gelten, so wie mir das mein Admin erklärt hat.


Wenn ich mod_wsgi verwenden sollte, müsste ich ja quasi für jede neue Applikation einen neuen VirtualHost anlegen, richtig?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Defnull hat geschrieben:

Code: Alles auswählen

ScriptAliasMatch ^(/.*)$ /some/path/to/app/myapp.py$1
Also mit ``ScriptAlias`` geht das durchaus einfacher als mit regulären Ausdrücken zu jonglieren.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
lynadge
User
Beiträge: 112
Registriert: Sonntag 4. April 2010, 10:17

Wir soll denn der ScriptAlias aussehen?
Geht der auch über die .htaccess?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

deadshox hat geschrieben:Wir soll denn der ScriptAlias aussehen?
Oh, ich seh grad, ich mach das sogar noch einfacher:

Code: Alles auswählen

Alias / /var/www/foo/bar.fcgi/
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
lynadge
User
Beiträge: 112
Registriert: Sonntag 4. April 2010, 10:17

Code: Alles auswählen

Alias / /var/.../python/bottle/index.py/
Gibt leider einen Internal Server Error aus.

Ich hab diesen Code in eine .htaccess Datei geschrieben die im selben Verzeichnis liegt wie die index.py.
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Wie dir die Doku mitteilt, lässt sich die Alias Direktive nicht in htaccess verwenden: http://httpd.apache.org/docs/1.3/mod/mo ... html#alias
frabron
User
Beiträge: 306
Registriert: Dienstag 31. März 2009, 14:36

Code: Alles auswählen

... /var/.../python/bottle/index.py/
... ist ja auch kein gültiger Dateipfad ;) man beachte den letzten Slash am Ende, mach den mal weg.
Benutzeravatar
lynadge
User
Beiträge: 112
Registriert: Sonntag 4. April 2010, 10:17

Ok. Habe jetzt auf mod_wsgi umgeschwenkt. Mein Admin hat für mich ein Alias eingetragen. :)

Jetzt läuft es. ... Endlich. :D

Danke für euren Hilfen/Hinweise.
Antworten