Kenneth Gonsalves
Python is a scripting language which is rapidly taking the world by storm. It runs on
all platforms. Don’t worry if you don’t know python - any reasonably competent
programmer can learn python in a day. This tutorial deals with creating 'quicky' dynamic
web pages using python.
You need:
1. Python preferrably version 2.3: http://www.python.org
2. Cheetah ver 0.9.15 or later: http://www.CheetahTemplate.org
3. A text editor (or use idle, the IDE that comes with python)
4. An HTML editor (Quanta plus is a good choice)
5. A browser to view your pages
6. An HTTP server to test your application (Apache?)
We will be creating a simple user registration form. The coding is in two parts:
1. Create a template in html
2. Create a script in Python to populate the template and read and
validate data from it
We will also be following the three fundamental principles of Web programming:
1. Don’t put HTML in your code.
2. Don’t put code in your HTML.
3. Don’t use JavaScript for validation
The registration form will need the following details:
1. Salutation: Mr, Ms, Dr and Mrs - radiobuttons
2. Name: leading and trailing spaces and non-alphanumeric characters not
allowed
3. Interests: Checkboxes
4. City: List select
Here is a screenshot of the running application:
HEIGHT="399">
Â
Â
Here is the complete Python code:
(remember that indentation is part of the python syntax and the script will not run if
the indentation is changed). Note that the code can be condensed a lot, but I have made it
verbose so that it is self-explanatory
#######################################
#!/usr/bin/python #put your path to python
from Cheetah.Template import Template
import cgi
#to get meaningful error messages
import cgitb
cgitb.enable()
ok = False
msg = ''
theform = cgi.FieldStorage()
#this records the form output
parms = {'name':'','sal':'','city':'','interest':<>,'title':'Registration Form'}
sals = {'Mr':'checked','Ms':'','Dr':'','Mrs':''}
cities = {'Bangalore':'selected','Chennai':'','Mumbai':''}
interests = {'Girls':'','Boys':'','Music':'','Loafing':''} #none selected
if theform.has_key('name'):
       parms<'name'> =
theform.getfirst('name').strip()
       #strip() removes leading and trailing spaces
       ok = True
       #if the name is there the form is complete
       for ch in parms<'name'>:
           if ch in
"!@#$%^&*()<>.,/\+-=":
               msg
+= " Illegal Character: "+ch+', '
               ok
= False
      if theform.has_key('interest'):
           parms<'interest'> =
theform.getlist('interest') #this is a list
           #check the selected
interests
           for k in
interests.keys():
                       if
k in parms<'interest'>:
                           interests
= 'checked'
                      else:
                              interests
= ''
       parms<'sal'> = theform.getfirst('sal')
       #check the selected salutation
       for k in sals.keys():
                   if
k == parms<'sal'>:
                       sals
= 'checked'
                   else:
                       sals
= ''
parms<'city'> = theform.getfirst('city')
#select the selected city
      for k in cities.keys():
               if
k == parms<'city'>:
                       cities
= 'selected'
               else:
                       cities
= ''
if ok:
#save it or mail it or do something with it
       msg = 'Success: '+str(parms<'sal'>)+'
'+str(parms<'name'>)
       msg = msg +' City: '+str(parms<'city'>)+'
Interests: '
       for k in parms<'interest'>:
                   msg
= msg +' '+str(k)
#simplest way to create a cheetah template object
t = Template(file = 'registration.tmpl')
#add the variables to the template object
t.parms = parms
t.msg = msg
t.sals = sals
t.cities = cities
t.interests = interests
#output the template
print "Content-Type: text/html\n\n"
print t
######################################################
Here is the html template: href="https://www.ciol.com/images/content/2004/registration1.htm">registration.html:
#######################################################
color='blue'>$parms<'title'>
###########################################
Note:
Copy both registration.py and registration.tmpl into the cgi-bin directory of your Web
server. Make registration.py executable and access it from your browser:
http://localhost/cgi-bin/registration.py
The comments in the python code are self explanatory. We create lists of salutations,
cities and interests and pass them to the template. Template commands start with '#' sign
and template variables passed are identified by a leading '$' sign. This makes it easy for
the html designer to prettify his Web page without knowing anything about coding. You can
view the template file with the preview mode of your html editor which will show you the
relationship between the variables and the html code.
Play around with the code a bit and you'll see how to customise it or add new
components. Enter illegal characters in the 'Name' field to see how validation works. Note
how everything you enter is retained in the form.
The code is copylefted under the KGL (which means you can do whatever you want with it
as long as you dont blame me.
Mail me at lawgon at thenilgiris dot com with doubts, comments and flames.