|
Terry MacDonald
terry at i3technologies.co.uk
Thu May 22 19:36:24 EST 2003
Hi again,
Thankyou very much for your replies, You seem a nice bunch in here.
I look forward to conversing with you over time (hopefully not all bug related!)
Anyways your advice solved one issue but unfortunately moved me on to the next.
I am reaching the end of my patience as I have tried various work arounds to my
ills and I just go up more garden paths to more problems (this should not be that
difficult I know!).
Forgive me but I have decided to post the code to see if you can tell what is wrong
cos I just can't get it to work as it is supposed to. The code is primarily example
code but has been rejigged a little while trying to get it to work.
Problems occuring now is that the subn function is giving a mulitple repeat error.
When I comment out the offending code I just get Object not found in the browser.
Also I have to put full pathnames in for the html files otherwise they cannot be
found (I know this can't be right - but i'm trying anything to get this to work)
Ultimately the example should print a form, fetch the contents and display them
back to you in another page (I think!) not exactly rocket science.
Below is the .py file and the two basic html files. Enjoy !
Cheers
Terry
================================================================================
#!/usr/bin/python
from mod_python import apache
from mod_python import util
import re
# specify the filename of the template file
TemplateFile = "/var/www/html/python/template.html"
# Display takes one parameter - a string to Display
def Display(Content):
TemplateHandle = open(TemplateFile, "r") # open in read only mode
# read the entire file as a string
TemplateInput = TemplateHandle.read()
TemplateHandle.close() # close the file
# this defines an exception string in case our
# template file is messed up
BadTemplateException = "There was a problem with the HTML template."
SubResult = re.subn( "<!-- *** INSERT CONTENT HERE *** -->", Content, TemplateInput )
if SubResult[1] == 0:
raise BadTemplateException
print "Content-Type: text/html\n\n"
print SubResult[0]
def ProcessForm(req):
form = util.FieldStorage(req)
# extract the information from the form in easily digestible format
try:
name = form["name"].value
except:
# name is required, so output an error if
# not given and exit script
Display("You need to at least supply a name. Please go back.")
raise SystemExit
try:
email = form["email"].value
except:
email = None
try:
color = form["color"].value
except:
color = None
try:
comment = form["comment"].value
except:
comment = None
Output = "" # our output buffer, empty at first
Output = Output + "Hello, "
if email != None:
Output = Output + "<A HREF=mailto:" + email + ">" + name + "</A>.<P>"
else:
Output = Output + name + ".<P>"
if color == "swallow":
Output = Output + "You must be a Monty Python fan.<P>"
elif color != None:
Output = Output + "Your favorite color was " + color + "<P>"
else:
Output = Output + "You cheated! You didn't specify a color!<P>"
if comment != None:
Output = Output + "In addition, you said:<BR>" + comment + "<P>"
Display(Output)
###
### Begin actual script
###
#### "key" is a hidden form element with an
### action command such as "process"
#try:
# key = form["key"].value
# key = form["key"].value
##except:
# key = None
#if key == "process":
# ProcessForm(form)
#else:
# DisplayForm()
# Open and display the form
FormFile = "/var/www/html/python/form2.html"
FormHandle = open(FormFile, "r")
FormInput = FormHandle.read()
FormHandle.close()
Display(FormInput)
=======================================================================================
Form2.html.........
<FORM METHOD="POST" ACTION="sample.py/processform">
<INPUT TYPE=HIDDEN NAME="key" VALUE="process">
Your name:<BR>
<INPUT TYPE=TEXT NAME="name" size=60>
<BR>
Email: (optional)<BR>
<INPUT TYPE=TEXT NAME="email" size=60>
<BR>
Favorite Color:<BR>
<INPUT TYPE=RADIO NAME="color" VALUE="blue" CHECKED>Blue
<INPUT TYPE=RADIO NAME="color" VALUE="yellow">No, Yellow...
<INPUT TYPE=RADIO NAME="color" VALUE="swallow">What do you mean, an African or European swallow?
<P>
Comments:<BR>
<TEXTAREA NAME="comment" ROWS=8 COLS=60>
</TEXTAREA>
<P>
<INPUT TYPE="SUBMIT" VALUE="Okay">
</FORM>
=======================================================================================
Template.html........
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<META NAME="keywords" CONTENT="blah blah -- your ad here">
<title>Python is Fun!</title>
</head>
<body>
<!-- *** INSERT CONTENT HERE *** -->
</body>
</html>
|