Handle 404 throw by code in appengine

google-app-engine, http-status-code-404, python

Solution

The easiest way to do this is to override the error() method on your base handler (presuming you have one) to generate the 404 page, and call that from your regular handlers and your 404 handler. For example:

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)

Problem

I manage the "real" 404 errors in this way: ``` application = webapp.WSGIApplication([ ('/', MainPage), #Some others urls ('/.*',Trow404) #I got the 404 page ],debug=False) ``` But in some parts of my code i throw a 404 error ``` self.error(404) ``` and i wanna show the same page that mentioned before, ¿there is any way to catch the 404 error and manage it? I can redirect to some inexistent url, but looks ugly

Original source