Python 如何在注销后将Plone设置为重定向到

Python 如何在注销后将Plone设置为重定向到,python,plone,plone-4.x,Python,Plone,Plone 4.x,我想设置一个plone网站,在用户注销后从url中的参数重定向到Comed_。对于登录,我设置了string:${globals\u view/navigationRootUrl}/login?来自=${context/absolute\u url},它正在工作 对于注销,这不起作用。我还尝试了它的活动: <subscriber for="Products.PlonePAS.events.UserLoggedOutEvent" handler="blabla.goCam

我想设置一个plone网站,在用户注销后从url中的参数重定向到Comed_。对于登录,我设置了
string:${globals\u view/navigationRootUrl}/login?来自=${context/absolute\u url}
,它正在工作

对于注销,这不起作用。我还尝试了它的活动:

  <subscriber
    for="Products.PlonePAS.events.UserLoggedOutEvent"
    handler="blabla.goCameFromAfterLogout"
    />
事件是正常的,come_from参数是正常的,但是代码没有按照我想要的方式工作。 网站每次都会将我重定向到
/logged\u out


那么,我如何设置它呢?

一个简单的方法:自定义
注销
,将其转换为Python脚本,重定向到您想要的任何页面:

context.REQUEST.RESPONSE.redirect(url)

您还可以在事件处理程序中引发重定向异常

from zExceptions import Redirect

def goCameFromAfterLogout(event):
""" Redirects user to came_from url parameter after logout
"""
request = event.object.REQUEST
came_from = request.form.get('came_from', None)
if came_from:
    raise Redirect(came_from)

另外
?next=url
而不是come\u from是个好主意。

在哪里添加这个?哪个文件?@codesaurusrex进入ZMI->portal\u skins->从“Find”选项卡中搜索“logged\u out”,选择它,然后按“Customize”按钮。它将把脚本放在“自定义”文件夹中。
from zExceptions import Redirect

def goCameFromAfterLogout(event):
""" Redirects user to came_from url parameter after logout
"""
request = event.object.REQUEST
came_from = request.form.get('came_from', None)
if came_from:
    raise Redirect(came_from)