mod_python handler: string übergabe

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Sonntag 7. Januar 2007, 04:23

Hallo ich weiß irgend wie nicht weiter, ich finde aber auch nichts in der Doku auf modpython.org es kann eigentlich nicht sein deshalb zweifel ich an meine Fähigkeit etwas zu ergooglen oder Texte lesen.

ich will daten per link übergeben bsp:

mod_python.publisher:
link http://localhost/py/mycode.py/index?name=me
heißt im www folder liegt die datei mycode.py mit folgendem inhalt:

Code: Alles auswählen

...
def index(req,name):
    req.content_type = "text/html"
    req.write('Dein Name ist %s'%name)
...
mod_python handler:
link http://localhost/py/mycode.py
heißt im www folder liegt die datei mycode.py mit folgendem inhalt:

Code: Alles auswählen

...
def handler(req):
    req.content_type = "text/html"
    req.write('Dein Name ist <keine Ahnung wie ich den String hin bekomme>')
...
beim mod_python handler ist in einer datei immer nur def handler und ich ewiß nicht wie ich da den string name reinbekomme.

Frage
Wie kann ich das lösen?
geht das vielleicht nur so wie es bei CGI auch geht?
BlackJack

Sonntag 7. Januar 2007, 11:56

Das ist ähnlich wie bei CGI. Es sollte eine `FieldStorage`-Objekt als Attribut `form` auf dem `Request`-Objekt geben.
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Sonntag 7. Januar 2007, 12:45

wenn ich den Wert hinter dem ``index.py?`` haben möchte muss
ich req.args sagen und bekomme es dann als String. Also habe ich
mir was geschreiben was den string zerlegt:

Code: Alles auswählen

def stringparser(args):
    s = {}
    #
    handle = re.split("&",args)
    for i in handle:
        handle2 = re.split("=",i)
        s[str(handle2[0])] = str(handle2[1])
    return s

def handler(req):
    req.content_type = "text/html"
    req.write(str(stringparser(req.args)))
    return apache.OK
dazu kann ich per req.method abfragen ob es ein POST oder ein GET war req.read() soll mir die übertragenen Header anzeigen dabin ich aber noch nicht durchgestiegen, die Befehle aus CGI scheinen auch irgendwie implementiert zu sein. Also da muss man erstmal durchsteigen. ^^
BlackJack

Sonntag 7. Januar 2007, 16:01

Was genau spricht gegen das `form` Attribut, anstatt sich das alles nochmal selbst zu programmieren!?
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Sonntag 7. Januar 2007, 16:14

ich nehme den mod_python publisher der handler ist mir zu ungewohnt ich habe oben ja beschrieben wie es im publisher geht und das ist deutlich komfortabler. ich hatte halt gedacht es würde da genauso gehen.
BlackJack

Sonntag 7. Januar 2007, 16:25

Ist doch völlig egal, du bekommst in beiden Fällen ein Request-Objekt. :?:
Antworten