如何在Pyramid中全局重定向IP地址?

时间:2013-08-08 23:37:02

标签: python pyramid pylons

是否有一种全球方式可以将用户与金字塔中的某些IP重定向?现在,我们必须按视图重定向视图。

例如,每个视图都会返回“我的自定义消息”,每个页面都有一个“xyx.xxx.xx”访问的ip地址。如果您没有该IP地址,则页面将正常加载。

@view_config(renderer="json", route_name="myview")
def myview(request):
    redirector(request)
    ......
def redirector(request):
    if request.remote_addr.startswith('66.'): return viewA(request)
    else: return 'my custom message'

我们是否有办法在金字塔中全局重定向(除了通过.htaccess)?

谢谢!

1 个答案:

答案 0 :(得分:3)

您可以使用 Pyramid's events system

@subscriber('pyramid.events.NewRequest')
def newrequest(event):
    request = event.request
    if request.remote_addr.startswith('66.'):
        raise SomeException('my custom message')

@view_config(context=SomeException, renderer='string')
def exc_view(exc, request):
    return exc.message