Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
e512006e
Commit
e512006e
authored
Feb 28, 1997
by
Guido van Rossum
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix up indentation of examples to use 4 spaces instead of tabs.
parent
65d90eb5
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
118 additions
and
118 deletions
+118
-118
Doc/lib/libcgi.tex
Doc/lib/libcgi.tex
+59
-59
Doc/libcgi.tex
Doc/libcgi.tex
+59
-59
No files found.
Doc/lib/libcgi.tex
View file @
e512006e
...
...
@@ -40,8 +40,8 @@ telling the client what kind of data is following. Python code to
generate a minimal header section looks like this:
\begin{verbatim}
print "Content-type: text/html"
# HTML is following
print
# blank line, end of headers
print "Content-type: text/html"
# HTML is following
print
# blank line, end of headers
\end{verbatim}
The second section is usually HTML, which allows the client software
...
...
@@ -49,9 +49,9 @@ to display nicely formatted text with header, in-line images, etc.
Here's Python code that prints a simple piece of HTML:
\begin{verbatim}
print "<TITLE>CGI script output</TITLE>"
print "<H1>This is my first CGI script</H1>"
print "Hello, world!"
print "<TITLE>CGI script output</TITLE>"
print "<H1>This is my first CGI script</H1>"
print "Hello, world!"
\end{verbatim}
(It may not be fully legal HTML according to the letter of the
...
...
@@ -77,16 +77,16 @@ dictionary. For instance, the following code (which assumes that the
the fields
\code
{
name
}
and
\code
{
addr
}
are both set to a non-empty string:
\begin{verbatim}
form = cgi.FieldStorage()
form
_
ok = 0
if form.has
_
key("name") and form.has
_
key("addr"):
if form["name"].value != "" and form["addr"].value != "":
form
_
ok = 1
if not form
_
ok:
print "<H1>Error</H1>"
print "Please fill in the name and addr fields."
return
...further form processing here...
form = cgi.FieldStorage()
form
_
ok = 0
if form.has
_
key("name") and form.has
_
key("addr"):
if form["name"].value != "" and form["addr"].value != "":
form
_
ok = 1
if not form
_
ok:
print "<H1>Error</H1>"
print "Please fill in the name and addr fields."
return
...further form processing here...
\end{verbatim}
Here the fields, accessed through
\code
{
form[key]
}
, are themselves instances
...
...
@@ -101,20 +101,20 @@ instance or a list of instances. For example, here's code that
concatenates any number of username fields, separated by commas:
\begin{verbatim}
username = form["username"]
if type(username) is type([]):
# Multiple username fields specified
usernames = ""
for item in username:
if usernames:
# Next item -- insert comma
usernames = usernames + "," + item.value
else:
# First item -- don't insert comma
usernames = item.value
else:
# Single username field specified
usernames = username.value
username = form["username"]
if type(username) is type([]):
# Multiple username fields specified
usernames = ""
for item in username:
if usernames:
# Next item -- insert comma
usernames = usernames + "," + item.value
else:
# First item -- don't insert comma
usernames = item.value
else:
# Single username field specified
usernames = username.value
\end{verbatim}
If a field represents an uploaded file, the value attribute reads the
...
...
@@ -124,14 +124,14 @@ file attribute. You can then read the data at leasure from the file
attribute:
\begin{verbatim}
fileitem = form["userfile"]
if fileitem.file:
# It's an uploaded file; count lines
linecount = 0
while 1:
line = fileitem.file.readline()
if not line: break
linecount = linecount + 1
fileitem = form["userfile"]
if fileitem.file:
# It's an uploaded file; count lines
linecount = 0
while 1:
line = fileitem.file.readline()
if not line: break
linecount = linecount + 1
\end{verbatim}
The file upload draft standard entertains the possibility of uploading
...
...
@@ -252,7 +252,7 @@ that the first line of the script contains \code{\#!} starting in column 1
followed by the pathname of the Python interpreter, for instance:
\begin{verbatim}
#!/usr/local/bin/python
#!/usr/local/bin/python
\end{verbatim}
Make sure the Python interpreter exists and is executable by ``others''.
...
...
@@ -274,9 +274,9 @@ default module search path, you can change the path in your script,
before importing other modules, e.g.:
\begin{verbatim}
import sys
sys.path.insert(0, "/usr/home/joe/lib/python")
sys.path.insert(0, "/usr/local/lib/python")
import sys
sys.path.insert(0, "/usr/home/joe/lib/python")
sys.path.insert(0, "/usr/local/lib/python")
\end{verbatim}
(This way, the directory inserted last will be searched first!)
...
...
@@ -312,7 +312,7 @@ in the standard \code{cgi-bin} directory, it should be possible to send it a
request by entering a URL into your browser of the form:
\begin{verbatim}
http://yourhostname/cgi-bin/cgi.py?name=Joe+Blow
&
addr=At+Home
http://yourhostname/cgi-bin/cgi.py?name=Joe+Blow
&
addr=At+Home
\end{verbatim}
If this gives an error of type 404, the server cannot find the script
...
...
@@ -329,9 +329,9 @@ The next step could be to call the \code{cgi} module's test() function from
your script: replace its main code with the single statement
\begin{verbatim}
cgi.test()
cgi.test()
\end{verbatim}
This should produce the same results as those gotten from installing
the
\code
{
cgi.py
}
file itself.
...
...
@@ -364,16 +364,16 @@ Here are the rules:
For example:
\begin{verbatim}
import sys
import traceback
print "Content-type: text/html"
print
sys.stderr = sys.stdout
try:
...your code here...
except:
print "
\n\n
<PRE>"
traceback.print
_
exc()
import sys
import traceback
print "Content-type: text/html"
print
sys.stderr = sys.stdout
try:
...your code here...
except:
print "
\n\n
<PRE>"
traceback.print
_
exc()
\end{verbatim}
Notes: The assignment to
\code
{
sys.stderr
}
is needed because the traceback
...
...
@@ -385,11 +385,11 @@ module, you can use an even more robust approach (which only uses
built-in modules):
\begin{verbatim}
import sys
sys.stderr = sys.stdout
print "Content-type: text/plain"
print
...your code here...
import sys
sys.stderr = sys.stdout
print "Content-type: text/plain"
print
...your code here...
\end{verbatim}
This relies on the Python interpreter to print the traceback. The
...
...
Doc/libcgi.tex
View file @
e512006e
...
...
@@ -40,8 +40,8 @@ telling the client what kind of data is following. Python code to
generate a minimal header section looks like this:
\begin{verbatim}
print "Content-type: text/html"
# HTML is following
print
# blank line, end of headers
print "Content-type: text/html"
# HTML is following
print
# blank line, end of headers
\end{verbatim}
The second section is usually HTML, which allows the client software
...
...
@@ -49,9 +49,9 @@ to display nicely formatted text with header, in-line images, etc.
Here's Python code that prints a simple piece of HTML:
\begin{verbatim}
print "<TITLE>CGI script output</TITLE>"
print "<H1>This is my first CGI script</H1>"
print "Hello, world!"
print "<TITLE>CGI script output</TITLE>"
print "<H1>This is my first CGI script</H1>"
print "Hello, world!"
\end{verbatim}
(It may not be fully legal HTML according to the letter of the
...
...
@@ -77,16 +77,16 @@ dictionary. For instance, the following code (which assumes that the
the fields
\code
{
name
}
and
\code
{
addr
}
are both set to a non-empty string:
\begin{verbatim}
form = cgi.FieldStorage()
form
_
ok = 0
if form.has
_
key("name") and form.has
_
key("addr"):
if form["name"].value != "" and form["addr"].value != "":
form
_
ok = 1
if not form
_
ok:
print "<H1>Error</H1>"
print "Please fill in the name and addr fields."
return
...further form processing here...
form = cgi.FieldStorage()
form
_
ok = 0
if form.has
_
key("name") and form.has
_
key("addr"):
if form["name"].value != "" and form["addr"].value != "":
form
_
ok = 1
if not form
_
ok:
print "<H1>Error</H1>"
print "Please fill in the name and addr fields."
return
...further form processing here...
\end{verbatim}
Here the fields, accessed through
\code
{
form[key]
}
, are themselves instances
...
...
@@ -101,20 +101,20 @@ instance or a list of instances. For example, here's code that
concatenates any number of username fields, separated by commas:
\begin{verbatim}
username = form["username"]
if type(username) is type([]):
# Multiple username fields specified
usernames = ""
for item in username:
if usernames:
# Next item -- insert comma
usernames = usernames + "," + item.value
else:
# First item -- don't insert comma
usernames = item.value
else:
# Single username field specified
usernames = username.value
username = form["username"]
if type(username) is type([]):
# Multiple username fields specified
usernames = ""
for item in username:
if usernames:
# Next item -- insert comma
usernames = usernames + "," + item.value
else:
# First item -- don't insert comma
usernames = item.value
else:
# Single username field specified
usernames = username.value
\end{verbatim}
If a field represents an uploaded file, the value attribute reads the
...
...
@@ -124,14 +124,14 @@ file attribute. You can then read the data at leasure from the file
attribute:
\begin{verbatim}
fileitem = form["userfile"]
if fileitem.file:
# It's an uploaded file; count lines
linecount = 0
while 1:
line = fileitem.file.readline()
if not line: break
linecount = linecount + 1
fileitem = form["userfile"]
if fileitem.file:
# It's an uploaded file; count lines
linecount = 0
while 1:
line = fileitem.file.readline()
if not line: break
linecount = linecount + 1
\end{verbatim}
The file upload draft standard entertains the possibility of uploading
...
...
@@ -252,7 +252,7 @@ that the first line of the script contains \code{\#!} starting in column 1
followed by the pathname of the Python interpreter, for instance:
\begin{verbatim}
#!/usr/local/bin/python
#!/usr/local/bin/python
\end{verbatim}
Make sure the Python interpreter exists and is executable by ``others''.
...
...
@@ -274,9 +274,9 @@ default module search path, you can change the path in your script,
before importing other modules, e.g.:
\begin{verbatim}
import sys
sys.path.insert(0, "/usr/home/joe/lib/python")
sys.path.insert(0, "/usr/local/lib/python")
import sys
sys.path.insert(0, "/usr/home/joe/lib/python")
sys.path.insert(0, "/usr/local/lib/python")
\end{verbatim}
(This way, the directory inserted last will be searched first!)
...
...
@@ -312,7 +312,7 @@ in the standard \code{cgi-bin} directory, it should be possible to send it a
request by entering a URL into your browser of the form:
\begin{verbatim}
http://yourhostname/cgi-bin/cgi.py?name=Joe+Blow
&
addr=At+Home
http://yourhostname/cgi-bin/cgi.py?name=Joe+Blow
&
addr=At+Home
\end{verbatim}
If this gives an error of type 404, the server cannot find the script
...
...
@@ -329,9 +329,9 @@ The next step could be to call the \code{cgi} module's test() function from
your script: replace its main code with the single statement
\begin{verbatim}
cgi.test()
cgi.test()
\end{verbatim}
This should produce the same results as those gotten from installing
the
\code
{
cgi.py
}
file itself.
...
...
@@ -364,16 +364,16 @@ Here are the rules:
For example:
\begin{verbatim}
import sys
import traceback
print "Content-type: text/html"
print
sys.stderr = sys.stdout
try:
...your code here...
except:
print "
\n\n
<PRE>"
traceback.print
_
exc()
import sys
import traceback
print "Content-type: text/html"
print
sys.stderr = sys.stdout
try:
...your code here...
except:
print "
\n\n
<PRE>"
traceback.print
_
exc()
\end{verbatim}
Notes: The assignment to
\code
{
sys.stderr
}
is needed because the traceback
...
...
@@ -385,11 +385,11 @@ module, you can use an even more robust approach (which only uses
built-in modules):
\begin{verbatim}
import sys
sys.stderr = sys.stdout
print "Content-type: text/plain"
print
...your code here...
import sys
sys.stderr = sys.stdout
print "Content-type: text/plain"
print
...your code here...
\end{verbatim}
This relies on the Python interpreter to print the traceback. The
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment