使用Tipfy捕获所有路由

时间:2010-10-19 05:00:49

标签: google-app-engine http-status-code-404 url-routing werkzeug tipfy

使用tipfy,如果更具体的路由不匹配,如何在urls.py中表示全能路由?

Tipfy使用类似Werkzeug的路由,所以就是这样(在 urls.py 中):

def get_rules(app): 
rules = [ 
    Rule('/<any>', endpoint='any', handler='apps.main.handlers.MainHandler'), 
    Rule('/', endpoint='main', handler='apps.main.handlers.MainHandler'), 
] 

这会将大多数随机入口点与应用程序匹配( app.example.com/foo app.example.com/%20 等),但不包括 app.example.com/foo/bar 案例导致404。

或者,是否有一种优雅的方式可以在Tipfy处理404我错过了?

2 个答案:

答案 0 :(得分:4)

我想你想要:

Rule('/<path:any>', endpoint='any', handler='apps.main.handlers.MainHandler')

path matcher也匹配斜杠。

答案 1 :(得分:2)

也许你可以编写自定义中间件:

class CustomErrorPageMiddleware(object):    
def handle_exception(self, e):           
    return Response("custom error page")

要启用它,请在tipfy config:

添加
   config['tipfy'] = {
       'middleware': [
           'apps.utils.CustomErrorPageMiddleware',
       ]
   }

它为您提供了相当大的灵活性 - 例如,您可以在某处发送邮件以通知存在问题。这将拦截您的应用程序中的所有异常