On Jun 6, 11:24 pm, "Mike Orr" <[EMAIL PROTECTED]> wrote:
> On Fri, Jun 6, 2008 at 5:11 PM, mc <[EMAIL PROTECTED]> wrote:
>
> > Hi,
>
> > When an exception occurs in my application I want to ba able to set
> > the response code and return a specific response body. I can set the
> > response without a problem but Pylons seems to be overriding the
> > response code and returns a 200 instead.
>
> > Here's my code snippet:
>
> > class MyController(BaseController)
> > def index(self):
> > result = {}
> > try: # try-except
> > result["result"] = func(*args, **kwargs)
> > except (KeyError, ValueError), e:
> > response.status = 400
> > result["error"] = str(e)
> > except Exception, e:
> > response.status = 500
> > result["error"] = str(e)
> > finally:
> > return result
>
> > I've read through the pylons docs on the wiki, but I can only find
> > references to an abort() method which sets the response code but
> > doesn't allow me to set the body. Any suggestions or pointers where I
> > can look for more information
>
> I set up an access log in my base controller's .__call__ method, and
> for some reason the errors are showing up as 200. So something
> strange is happening to the status but I haven't figured out where.
> It could be related to your problem.
>
> The integer version of the status is in response.status_code, not
> response.status. Maybe you need to set it there. In the development
> version of Pylons it's in response.status_int due to the migration to
> WebOb.
Setting response.status_code successfully changes the response code.
Thanks for that. The problem now is that pylons error handling kicks
in and clobbers the response body which I've already set. I think what
I need to do is provide a custom error handler, but I'm not sure how
to pass the exception information to the handler.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"pylons-discuss" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/pylons-discuss?hl=en
-~----------~----~----~----~------~----~------~--~---