Implemetation Python Parameter

  • Hallo,

    ich bin neu hier und vielleicht bin ich unter "Technik" falsch. Gebt mir in diesem Fall bitte Bescheid.

    Ich habe verschiedenste Varianten ausprobiert. Aber das einzige, was ich bis jetzt zum Laufen bekommen habe, ist die direkte Ausgabe eines Pythonscriptes anstelle von HTML-Code. Ansonsten wird immer versucht, die Datei herunterzuladen. Was ich aber benötigen würde, ist eine Möglichkeit, Parameter an Pythonfunktionen zu übergeben, bzw. das 'POST' auszuwerten. Das ist mir leider nicht gelungen. Im Forum habe ich auch nichts Entsprechendes gefunden. A ktuell wird auf der Seite des bisherigen Providers folgender Einstieg genutzt, welcher leider nicht mehr funktioiert:

    Python
    #!/usr/bin/python
    from mod_python import apache
    def index(req):
         args = req.args.split('&')
    ...

    Könnte mir jemand ein einfaches HowTo Beispiel zur Verfügung stellen, welches Argumente auswertet? Ein Code-Snippet würde mir genügen. Oder muss ich noch irgendwo etwas einsttellen? Bei der Einstellung des Handlers habe ich verschiedene Sachen probiert. Aber alles ohne Erfolg.

  • Hallo Martin B,


    was dir fehlt, wenn das Script angezeigt wird, ist eine Einstellung im Apache Webserver.

    Auf der Seite http://modpython.org/live/current/doc-html/tutorial.html ist es beschrieben:


    Code
    AddHandler mod_python .py
    PythonHandler mod_python.publisher
    PythonDebug On

    Somit sollte, wenn alles richtig installiert ist, das Script ausgeführt werden und enbtsprechend gewollte Ausgaben im Browser angezeigt werden :)


    Viele Grüße

    Andreas


    Edit: Die Einstellungen müssen im VHost des Webserver-Konfiguration eingetragen werden...

  • Hallo Andreas,

    Danke für deine Antwort. Das war einer meiner zahlreichen Versuche. Leider hat mich das nicht zum Ziel gebracht. Vielleicht bin ich aber auch an der falschen Stelle. Im Handler unter "Einstellungen Webserver" bringt das auf jeden Fall keinen Effekt. Die HTML-Datei aus dem Beispiel wird korrekt ausgeführt. Wenn ich das Formular dann ausfülle und abschicke, wird wieder nur versucht, das Python-Script herunterzuladen. Zudem hat es die Größe 0.


    Martin

  • Hallo,

    bei einem meiner zahlreichen Versuche bekomme ich jetzt endlich mal eine Fehlermeldung heraus. Laut dieser ist nicht der von mir eingestellte Handler aktiv, sondern 'mod_python.cgihandler'.

    Ich habe folgendes eingetragen:


    AddHandler mod_python .py

    PythonHandler mod_python.publisher

    PythonDebug On


    Was kann ich tun, um deinen anderen Handler einzustellen?


    MOD_PYTHON ERROR

    ProcessId: 26620

    Interpreter: 'xxxxxxxxxxx.de'
    ServerName: 'xxxxxxxxxxx.de'

    DocumentRoot: '/var/www/vhosts/hostingxxxxxx.xxxxx.netcup.net/httpdocs/xxxxxxxxxxx'

    URI: '/f.py'

    Location: None

    Directory: '/var/www/vhosts/hostingxxxxxx.xxxxx.netcup.net/httpdocs/xxxxxxxxxxx/'

    Filename: '/var/www/vhosts/hostingxxxxxx.xxxxx.netcup.net/httpdocs/xxxxxxxxxxx/f.py'

    PathInfo: ''

    Phase: 'PythonHandler'

    bei einem meiner zahlreichen VersucheHandler: 'mod_python.cgihandler'

    Traceback (most recent call last):

    File "/usr/lib/python2.7/dist-packages/mod_python/importer.py", line 1537, in HandlerDispatch

    default=default_handler, arg=req, silent=hlist.silent)

    File "/usr/lib/python2.7/dist-packages/mod_python/importer.py", line 1229, in _process_target

    result = _execute_target(config, req, object, arg)
    File "/usr/lib/python2.7/dist-packages/mod_python/importer.py", line 1128, in _execute_target

    result = object(arg)
    File "/usr/lib/python2.7/dist-packages/mod_python/cgihandler.py", line 96, in handler

    imp.load_module(module_name, fd, path, desc)
    File "/var/www/vhosts/hostingxxxxxx.xxxxx.netcup.net/httpdocs/xxxxxxxxxxx/f.py", line 10, in <module>

    from flup.server.fcgi import WSGIServer

    ImportError: No module named flup.server.fcgi


    Martin

  • Hallo nochmal,


    nach vielen Stunden habe ich jetzt endlich einem Möglichkeit gefunden,Argumente auszuwerten :)

    Gefunden habe ich es hier:

    https://stackoverflow.com/ques…riables-handled-in-python

    Zitat



    Here's the Python routine to populate a GET dictionary:

    Code
    GET={}
    args=os.getenv("QUERY_STRING").split('&')
    
    for arg in args:     t=arg.split('=')    if len(t)>1: k,v=arg.split('='); GET[k]=v

    and for POST:

    Code
    POST={}
    args=sys.stdin.read().split('&')
    
    for arg in args:     t=arg.split('=')    if len(t)>1: k, v=arg.split('='); POST[k]=v

    You can now access the fields as following:

    Code
    print GET.get('user_id')
    print POST.get('user_name')

    Jetzt kann ich endlich einen Umzug versuchen.


    Martin

  • Hallo,


    ich habe noch etwas getüftelt. Aber jetzt bin ich zu einem brauchbaren Ergebnis gekommen. Schade nur, dass ich bisher nicht herausgefunden habe, wie ich vernünftig debuggen kann, wo mir also Fehlermeldungen aus Python angezeigt werden.



    env.html

    HTML
    <html>
      <p>                           
      <form action="env.py/?get1=abc&get2=cde" method="POST">
        post1: <input type="text" name="post1"><br>
        post2: <input type="text" name="post2"><br>
        <input type="submit">
      </form>
    </html>


    env.py