Inconsistency in CGI Documentation????

Maan M. Hamze mmhamze at
Tue Aug 21 17:16:49 CEST 2001

While working on a Python CGI script I ran into the following:
Assume I have a form with a Text Input element.  The element has a name, but
I chose not to set its value, or to set value to "" (empty).
I import CGI module and define:  Test_Form = cgi.FieldStorage()
1.  PythonWin documentation of Python states the following:
Form fields containing empty strings are ignored and do not appear in the
dictionary; to keep such values, provide the optional "keep_blank_values"
argument when creating the FieldStorage instance.
Question:  How do you provide this argument?
Test_Form=cgi.FieldStorage(keep_blank_values)??  This is not working.

Ok!  I am not going to provide this argument.  So, the Text Input element
that I left empty and had not provided a vlaue for should NOT make it into
FieldStorage() if user does not type some characters in it.  Right?  I tried
it.  It does not make it.
Even if I provide a value of " " (is " " an empty string??)

2.  BUT, read on:
check  Slide # 40
<form method="POST" action="">
Your first name: <input type="text" name="firstname">
<submit button goes here>
<input type="hidden" name="session" value="1f9a2">

Ok!  So here it is, a Text Input element with no value.  From the
documentation above in 1., this element should not be in FieldStorage unless
one types in something.
Now, move into Slide 41:
 print "Content-type: text/html\n"
 form = cgi.FieldStorage()     # parse query
 if form.has_key("firstname")  and  form["firstname"].value != "":
      print "Hello", form["firstname"].value
      print "Error! Please enter first name."

Of interest is:   if form.has_key("firstname")  and  form["firstname"].value
!= ""
How come we are checking for the key AND that the vlaue of the key is not
""?  Is not that code assuming that a non-empty string can be included in
FieldStorage() without using keep_blank_values?  Thus a contradiction with
what point 1. has to say about it?

I am really trying to understand this.  Can someone help?

More information about the Python-list mailing list