[Zope-dev] z3c.form and redirects
Wichert Akkerman
wichert at wiggy.net
Tue Feb 23 09:38:18 EST 2010
On 2/23/10 15:33 , Martin Aspeli wrote:
> Hi,
>
> A lot of the forms I write perform a redirect at the end of the action
> handler for a successfully submitted form.
>
> z3c.form's __call__() indiscriminately calls update() and then render().
> This means that even if something in update() (the action handler in
> this case) causes a redirect, the render() method is called, which is
> unnecessary since the browser will ignore the response body and perform
> the redirect. It also triggered a small bug in Plone (since worked
> around) whereby status messages would be output on the "hidden" page and
> go missing for the final page (status messages in Plone can be persisted
> across redirects using a cookie).
>
> Grok's forms do something like this:
>
> def __call__(self):
> self.update()
> if self.request.response.getStatus() not in (301, 302):
> return self.render()
> return u''
>
> Would it be an idea for z3c.form to do the same?
+1
I would be in favour skipping render() for any status outside of 2XX
instead of hardcoding 301 & 302.
Wichert.
More information about the Zope-Dev
mailing list