在 App Engine 中处理代码抛出的 404
我处理“真正的”404错误的方式是这样的:
application = webapp.WSGIApplication([
('/', MainPage),
#Some others urls
('/.*',Trow404) #I got the 404 page
],debug=False)
但是在我代码的某些地方,我会抛出一个404错误
self.error(404)
我想显示之前提到的同一页面,有没有办法捕捉到这个404错误并进行处理呢?
我可以重定向到一个不存在的链接,但看起来很难看。
2 个回答
0
在Derek Dahmer的回答基础上(我没有足够的积分来留言),你可以把这个添加到Throw404中,以发送正确的头信息:
class Throw404(webapp.RequestHandler):
def get(self):
self.error(404)
# your 404 handler goes here
9
最简单的方法就是在你的基础处理器上重写 error() 方法(假设你有一个基础处理器),这样就可以生成404页面,然后在你的普通处理器和404处理器中调用这个方法。例如:
class BaseHandler(webapp.RequestHandler):
def error(self, code):
super(BaseHandler, self).error(code)
if code == 404:
# Output 404 page
class MyHandler(BaseHandler):
def get(self, some_id):
some_obj = SomeModel.get_by_id(some_id)
if not some_obj:
self.error(404)
return
# ...
class Error404Handler(BaseHandler):
def get(self):
self.error(404)