Standard Module cgi

cgi WWWserver CGIprotocol HTTPprotocol MIMEheaders This module makes it easy to write Python scripts that run in a WWW server using the Common Gateway Interface. It was written by Michael McLay and subsequently modified by Steve Majewski and Guido van Rossum. When a WWW server finds that a URL contains a reference to a file in a particular subdirectory (usually /cgibin), it runs the file as a subprocess. Information about the request such as the full URL, the originating host etc., is passed to the subprocess in the shell environment; additional input from the client may be read from standard input. Standard output from the subprocess is sent back across the network to the client as the response from the request. The CGI protocol describes what the environment variables passed to the subprocess mean and how the output should be formatted. The official reference documentation for the CGI protocol can be found on the World-Wide Web at <URL:http://hoohoo.ncsa.uiuc.edu/cgi/overview.html>. The cgi module was based on version 1.1 of the protocol and should also work with version 1.0. The cgi module defines several classes that make it easy to access the information passed to the subprocess from a Python script; in particular, it knows how to parse the input sent by an HTML ``form'' using either a POST or a GET request (these are alternatives for submitting forms in the HTTP protocol). The formatting of the output is so trivial that no additional support is needed. All you need to do is print a minimal set of MIME headers describing the output format, followed by a blank line and your actual output. E.g. if you want to generate HTML, your script could start as follows:
# Header -- one or more lines:
print "Content-type: text/html"
# Blank line separating header from body:
print
# Body, in HTML format:
print "<TITLE>The Amazing SPAM Homepage!</TITLE>"
# etc...
The server will add some header lines of its own, but it won't touch the output following the header. The cgi module defines the following functions:
\begin{funcdesc}{parse}{}
Read and parse the form submitted to the script and re...
...QUERY_STRING']} to the raw query string, if it isn't
already set.
\end{funcdesc}

\begin{funcdesc}{print_environ_usage}{}
Print a piece of HTML listing the enviro...
...l.
This is mainly useful when learning about writing CGI scripts.
\end{funcdesc}

\begin{funcdesc}{print_environ}{}
Print a piece of HTML text showing the entire ...
...l
environment. This is mainly useful when debugging a CGI script.
\end{funcdesc}

\begin{funcdesc}{print_form}{form}
Print a piece of HTML text showing the conten...
...lass thereof).
This is mainly useful when debugging a CGI script.
\end{funcdesc}

\begin{funcdesc}{escape}{string}
Convert special characters in \var{string} to H...
... the string
quote. There is currently no function that does this.
\end{funcdesc}
The module defines the following classes. Since the base class initializes itself by calling parse(), at most one instance of at most one of these classes should be created per script invocation:
\begin{funcdesc}{FormContentDict}{}
This class behaves like a (read-only) dictio...
...member \code{query_string} to the raw query sent from the
server.
\end{funcdesc}

\begin{funcdesc}{SvFormContentDict}{}
This class, derived from \code{FormContent...
...defined fields, and lists of strings for
multiply-defined fields.
\end{funcdesc}
(It currently defines some more classes, but these are experimental and/or obsolescent, and are thus not documented — see the source for more informations.) The module defines the following variable:
\begin{datadesc}{environ}
The shell environment, exactly as received from the ht...
...ee
the CGI documentation for a description of the various fields.
\end{datadesc}


Subsections