Я управляю "реальными" 404 ошибками таким образом:
application = webapp.WSGIApplication([
('/', MainPage),
#Some others urls
('/.*',Trow404) #I got the 404 page
],debug=False)
Но в некоторых частях моего кода я бросаю 404 ошибки
self.error(404)
и я хочу показать ту же страницу, которая упомянула прежде, ¿there какой-либо путь должен зафиксировать 404 ошибки и управлять им?
Я могу перенаправить к некоторому несуществующему URL, но выгляжу уродливым
Самый простой способ сделать это - переопределить метод ошибки () на вашем базовом обработчике (предполагаю, что у вас есть) для генерации страницы 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)
Piggy Backing на ответом Дерек Даумера (у меня нет Карма оставить комментарии), вы можете добавить это на бросок404 для отправки правильного заголовка:
class Throw404(webapp.RequestHandler):
def get(self):
self.error(404)
# your 404 handler goes here