Обработайте 404 броска кодом в appengine

Я управляю "реальными" 404 ошибками таким образом:

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

Но в некоторых частях моего кода я бросаю 404 ошибки

self.error(404)

и я хочу показать ту же страницу, которая упомянула прежде, ¿there какой-либо путь должен зафиксировать 404 ошибки и управлять им?

Я могу перенаправить к некоторому несуществующему URL, но выгляжу уродливым

6
задан Kristian Damian 26 January 2010 в 23:10
поделиться

2 ответа

Самый простой способ сделать это - переопределить метод ошибки () на вашем базовом обработчике (предполагаю, что у вас есть) для генерации страницы 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)
9
ответ дан 10 December 2019 в 02:47
поделиться

Piggy Backing на ответом Дерек Даумера (у меня нет Карма оставить комментарии), вы можете добавить это на бросок404 для отправки правильного заголовка:

class Throw404(webapp.RequestHandler):
  def get(self):
    self.error(404)
    # your 404 handler goes here
0
ответ дан 10 December 2019 в 02:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: