[mod_python] extending util.FieldStorage

Daniel J. Popowich dpopowich at mtrsd.k12.ma.us
Wed Oct 15 12:31:41 EST 2003

I found myself wanting methods of util.FieldStorage that are found in
the cgi module since python 2.2, getfirst and getlist.  They save tons
of code of the form:

       if form.has_key('foo'):
           foo = form['foo']
           if type(foo) is not type([]):
               foo = [foo]
           foo = []

which can cause code-clutter if you have a number of form variables.
Instead, one can simply write:

      foo = form.getlist('foo')

See the cgi documentation for 2.2 or later for details about these
methods and how they can help you reduce code and write safer code to
protect against malformed requests.

I extended util.FieldStorage to add those two methods plus a get()
(which behaves like a standard dict.get) and thought others might like
the code (which I didn't write in whole, but stole mostly from modules
cgi and UserDict).

If found useful by many, perhaps they can be included in the 3.1


Daniel Popowich
Network Specialist


from mod_python import util

class form(util.FieldStorage):

    def get(self, key, default=None):
        if not self.has_key(key):
            return default
        return self[key]

    def getfirst(self, key, default=None):

        if self.has_key(key):
            value = self[key]
            if type(value) is type([]):
                return value[0]
                return value
            return default

    def getlist(self, key):

        if self.has_key(key):
            value = self[key]
            if type(value) is type([]):
                return value
                return [value]
            return []

More information about the Mod_python mailing list