ich will mich gleich mal als Python-Newbie outen, damit wir das hinter uns haben
Ich habe schon einige kleine Python-Skripte geschrieben, und führe Sie immer aus dem ../cgi-bin/....Verzeichnis heraus auf (klappt prima). Kann ich .py-Dateien auch in einem x-beliebeigen Verzeichnis unterhalb des DocRoot´s meines Apache ausführen ??? muss doch gehen !! geht ja auch mit php etc. außerdem habe ich auch Zope zum Laufen gekriegt allerdings auf einem anderen Server.
Ich bin meine httpd.conf oft durchgegangen, aber beim anklicken einer meiner .py-Dateien unterhalb des DocRoot, fragt mich mein Browser mit welcher Application ich die Datei öffnen will oder ob ich die Datei speichern möchte.
O.K. mir ist klar das mein Server ganz offensichtlich nicht weiß wie er mit diesem Datteityp umgehen soll, aber ich habe soweit alles eingerichtet.
Code: Alles auswählen
<Directory "/srv/www/htdocs/python">
# AddHandler python-program .py
Addhandler mod_python .py
AddType application/x-httpd-py .py
PythonHandler hallo
PythonDebug On
Order allow, deny
Allow from all
</Directory>
zweite Frage:
Ich habe ein Skript, das ein Formular zum ausfüllen bereitstellt. Nach dem Abschicken verarbeitet ein Pythonskript die Datei - nur leider mit einem Fehler der mir nicht klar ist, da mir die interne Verarbeitung von Python noch nciht so ganz klar ist.
....Sorry für evtl. etwas zu viel Code in meinem Post. Aber so erkennt man wenigstens was...
Mein code:
Code: Alles auswählen
#------------------------
class FormData:
#------------------------
"""A repository for information gleaned from a CGI form"""
def __init__(self, form):
self.time = time.asctime()
for fieldname in self.fieldnames:
if fieldname not in form or form[fieldname].value == "":
bail()
else:
setattr(self, fieldname, form[fieldname].value)
#--------------------------------------
class FeedbackData(FormData):
#--------------------------------------
"""A Formdata generated by the comment.html form."""
fieldnames = ('name', 'vorname', 'type')
def __repr__(self):
return "%(typs)s from %(name)s on %(time)s" % vars(self)
if __name__ == '__main__':
sys.stderr = sys.stdout
form = cgi.FieldStorage()
data = FeedbackData(form)
Python-Errorausgabe:
/srv/www/cgi-bin/feedback.py
63 data = FeedbackData(form)
data undefined, FeedbackData = <class __main__.FeedbackData>, form = FieldStorage(None, None, [MiniFieldStorage('name...MiniFieldStorage('send', 'Submit that shit ')])
/srv/www/cgi-bin/feedback.py in __init__(self=<FeedbackData instance>, form=FieldStorage(None, None, [MiniFieldStorage('name...MiniFieldStorage('send', 'Submit that shit ')]))
42 self.time = time.asctime()
43 for fieldname in self.fieldnames:
44 if fieldname not in form or form[fieldname].value == "":
45 bail()
46 else:
fieldname = 'name', form = FieldStorage(None, None, [MiniFieldStorage('name...MiniFieldStorage('send', 'Submit that shit ')]), ].value undefined
? in __getitem__(self=FieldStorage(None, None, [MiniFieldStorage('name...MiniFieldStorage('send', 'Submit that shit ')]), key=0)
KeyError: 0
__doc__ = 'Mapping key not found.'
__getitem__ = <bound method KeyError.__getitem__ of <exceptions.KeyError instance>>
__init__ = <bound method KeyError.__init__ of <exceptions.KeyError instance>>
__module__ = 'exceptions'
__str__ = <bound method KeyError.__str__ of <exceptions.KeyError instance>>
args = (0,)
Mir ist einfach nicht ganz klar was genau der Fehler in Zeile 44 sein kann.
Und die Fehlerausgabe kann ich nur ungenau deuten, es geht wohl um eine falsche Konvertierung .
Vielen Dank im Voraus
aLeX...
Edit (Leonidas): Code in Python-Tags gesetzt.