使用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我错过了?
答案 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',
]
}
它为您提供了相当大的灵活性 - 例如,您可以在某处发送邮件以通知存在问题。这将拦截您的应用程序中的所有异常