I've appended to this email a patch for clearing a form after it has been processed so it can be rendered again in one request. After some light unit testing, it seems to work well. Intended usage is: form = self.build_some_form() # Form will post back to this exported method. if form.is_submitted() and not form.has_errors(): # process form.... form.clear() form.render() If you use the prefix keyword on the Form constructor, you can mix many of these in one exported method. Dave --------------- --- form.qpy.orig 2007-11-16 17:39:01.000000000 -0600 +++ form.qpy 2007-11-16 18:54:05.000000000 -0600 @@ -200,6 +200,11 @@ has_errors = True return has_errors + def clear(self): + request = get_request() + for widget in self: + widget.clear(request) + def clear_errors(self): """Ensure that all components of the form have parsed themselves. Clear any errors that might have occurred during parsing. --- widget.qpy.orig 2007-11-16 17:47:33.000000000 -0600 +++ widget.qpy 2007-11-16 18:57:20.000000000 -0600 @@ -147,6 +147,15 @@ else: self.value = None + def clear(self, request=None): + if request is None: + request = get_request() + if self.name in request.get_fields(): + del request.get_fields()[self.name] + if self._parsed: + self._parse(request) + def render_title [html] (self, title): if title: '\n'