On Apr 19, 2008, at 6:20 AM, Hermann Himmelbauer wrote:
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

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
   raise Redirect(redir_url)
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 Fulton
Zope Corporation

Zope3-users mailing list

Reply via email to