通过appengine中的代码处理404抛出

时间:2010-01-26 19:58:47

标签: python google-app-engine http-status-code-404

我以这种方式管理“真正的”404错误:

application = webapp.WSGIApplication([
     ('/', MainPage),    
     #Some others urls
     ('/.*',Trow404) #I got the 404 page
],debug=False)

但在我的代码的某些部分,我抛出了404错误

self.error(404)

我希望显示之前提到的同一页面,¿有什么方法可以捕获404错误并进行管理吗?

我可以重定向到一些不存在的网址,但看起来很难看

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

小猪支持Derek Dahmer的答案(我没有留下评论的业力),你可以将其添加到Throw404以发送正确的标题:

class Throw404(webapp.RequestHandler):
  def get(self):
    self.error(404)
    # your 404 handler goes here