【问题标题】:Handle 404 throw by code in appengine在 appengine 中通过代码处理 404 抛出
【发布时间】:2011-01-09 16:13:38
【问题描述】:

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

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

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

self.error(404)

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

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

【问题讨论】:

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


    【解决方案1】:

    执行此操作的最简单方法是覆盖您的基本处理程序(假设您有一个)上的 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)
    

    【讨论】:

    • 太棒了。感谢分享!
    【解决方案2】:

    支持 Derek Dahmer 的回答(我没有离开 cmets 的业力),然后您可以将其添加到 Throw404 以发送正确的标头:

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

    【讨论】:

      猜你喜欢
      • 2014-05-18
      • 2019-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-02
      相关资源
      最近更新 更多