Gregory (Grisha) Trubetskoy
grisha at modpython.org
Wed Oct 8 14:10:53 EST 2003
On Wed, 8 Oct 2003, Anthony Barker wrote: > I was wondering how to get started processing an html form. > > 1) is there something equivalent to Apache::PerlRun? > > "This module does not cache compiled scripts between runs. A script is > loaded and compiled freshly each time it is requested. However, > Apache::PerlRun still avoids the overhead of starting a new Perl > interpreter for each CGI script, so it's faster than traditional Perl > CGI scripting but slower than Apache::Registry or vanilla Apache API > modules." No. (The cgi handler is as close as you will get to this). I don't know what the Perl folks do, but on Python side the only way to achieve this (including a clean namespace) is to reset the interpreter, which only results in marginal improvement. Not to mention that there is something awkward with this whole approach :-) > 2) How would mod_python enable this simple script? > > #!/usr/bin/python2 > import cgi, sys, string > sys.stderr = sys.stdout > print "Content-type: text/html\r\n" > > out1 = """ > <HTML> > <HEAD><TITLE>Info Form</TITLE></HEAD> > <BODY BGCOLOR = white> > <H3>Please, enter your name and age.</H3> > <TABLE BORDER = 0> > <FORM METHOD = post ACTION = "t3.cgi"> > <TR><TH>Name:</TH><TD> > <INPUT type = text name = "name"></TD> > </TABLE> > <INPUT TYPE = hidden NAME = "action" VALUE = "display" > <INPUT TYPE = submit VALUE = "Enter"> > </FORM> > </BODY> > </HTML>""" > > form = cgi.FieldStorage() > if form.has_key("action"): > if form.has_key("name"): > print "hello " + form["name"].value > else: > print out1 > If you are using the publisher handler, then your Apache config would look like this (and make sure it is not a CGI ScriptAlias): AddHandler python-program .py PythonHandler mod_python.publisher PythonDebug On And the script could be something like the below. If the script was named form.py, you'd access the below via http://blah.bla.com/form.py/info. def info(name=None, action=None): out1 = """ <HTML> <HEAD><TITLE>Info Form</TITLE></HEAD> <BODY BGCOLOR = white> <H3>Please, enter your name and age.</H3> <TABLE BORDER = 0> <FORM METHOD = post ACTION = "info"> <TR><TH>Name:</TH><TD> <INPUT type = text name = "name"></TD> </TABLE> <INPUT TYPE = hidden NAME = "action" VALUE = "display" <INPUT TYPE = submit VALUE = "Enter"> </FORM> </BODY> </HTML>""" if action and name: return "hello %s" % name else: return out1 HTH, Grisha
|