[Zope3-Users] "raise Redir(newurl)" not working - can someone confirm this?

Jim Fulton jim at zope.com
Sat Apr 19 09:43:03 EDT 2008


On Apr 19, 2008, at 6:20 AM, Hermann Himmelbauer wrote:
> Hi,
> In my application, namely for URL-Rewriting for session handling, I  
> need to
> stop the current request and redirect to another url (including the  
> session
> key).
>
> For that reason, I issue the following statement:
>
> from zope.publisher.interfaces import Redirect
> raise Redirect('http://my.new.url')
>
> Theoretically, this exception should be caught by the publisher and  
> a redirect
> should be done, unfortunately not in my case:
>
> -------------
> Traceback (most recent call last):
>  File "/local/home/dusty/Zope-3.4.0c1/lib/python/zope/publisher/ 
> publish.py",
> line 130, in publish
>    obj = request.traverse(obj)
> ....
>  File "/home/dusty/prog/zope3-inst/lib/python/my_app/session.py",  
> line 72, in
> getClientId
>    raise Redirect(redir_url)
> Redirect:
> Location: /++session+ 
> +VLdODjCYl90YmQwdNG6hvdiT11UZS3oly5kXonWYLHdGHloxvTshQs/favicon.ico
> --------------
>
> I don't know why this happens, *maybe* that's due to inclusion of  
> some 3rd
> party packages, e.g. z3c.layer.pagelet?
>
> To confirm this, I'd like to know if this scenario is only happening  
> for me,
> so, can you please simply insert the above statement in some  
> arbitrary view
> and tell me if it works?


This may be a bug in Zope 3.  I suspect that there needs to be an  
error view or Redirect that actually does the redirect.

I think you are going to have to register a page for the redirect  
exception that calls response.redirect.

See zope.app.exception.browser for other examples of exception views.

Jim


--
Jim Fulton
Zope Corporation




More information about the Zope3-users mailing list