[Medusa-dev] RE: Medusa CGI requests
Kevin Smith
smithk at attbi.com
Fri Dec 20 20:10:43 EST 2002
Using the CGI module (FieldStorage class) with Medusa....
I have been able to use the cgi module with medusa but needed to recreate
some of the necessary information that medusa had consumed in the request
object.
try this in your python script....
from cgi import FieldStorage
#FieldStorge default is to get the header info from enviroment variables
#we can override this in the constructor of the FieldStorage class
#the FieldStorage headers object must be a dictionary if it is
overridden
#the Medusa request.header will need to be converted into a
dictionary...
#create an empty dictionary object
dicHeader = {}
#break the request.header tuple apart...
for varPart in request.header:
#break each reqest header part apart into key/values pairs
varKeyValuePair= varPart.split(": ")
#Place them in the dictionary
dicHeader[varKeyValuePair[0]]=varKeyValuePair[1]
# create another dictionary to act as the enviroment variables
dicEnvir = {}
#Add the Request Method from the request object
dicEnvir['REQUEST_METHOD'] = request.command
#break up the request uri into parts...
[path, params, query, fragment] = request.split_uri()
#put the query string in the dictionary...
dicEnvir['QUERY_STRING'] = query
#create a FieldStorage object with overridden headers and environ object
form = FieldStorage(fp=stdin,headers=dicHeader,environ=dicEnvir)
if form.has_key("user"):
print "user = %s" % form["user"].value
I have been using this with HTML form data that is posted like so....
....
<FORM action="cgi-bin/test.mpy" enctype="application/x-www-form-urlencoded"
method="post" name="submitform">
<INPUT type="text" name="user">
<INPUT type="submit" name="continue" value="Continue">
</FORM>
.....
good luck
Kevin
More information about the Medusa-dev
mailing list