我在谷歌 App 引擎( Python) 中使用 Webap2 框架。 在 < a href=" http://webapp- improped. appspot.com/ guide/ explications.html# 例外- in-the-wsgi- app" rel= “ nofollow noreferrer” >webap2 例外处理: WSGI 应用程序 中的例外处理 。 它描述如何处理函数中的404个错误 :
import logging
import webapp2
def handle_404(request, response, exception):
logging.exception(exception)
response.write( Oops! I could swear this page was here! )
response.set_status(404)
def handle_500(request, response, exception):
logging.exception(exception)
response.write( A server error occurred! )
response.set_status(500)
app = webapp2.WSGIApplication([
webapp2.Route( / , handler= handlers.HomeHandler , name= home )
])
app.error_handlers[404] = handle_404
app.error_handlers[500] = handle_500
该类中 .get ()
方法中的 webapp2. requestHandler
类中, 我如何处理404个错误?
<强>编辑: 强>
我想拨打 requestHandler
的原因是要访问会话( request.session
) 。 否则我就无法将当前用户传送到404错误页面的模板。 也就是说, < a href=" https:// stackoverflow. com/ abc > > > StackOverflow 404错误页面 您可以看到您的用户名 。 我想将当前用户的用户名显示在我的网站 s 404 错误页面上。 这在函数中是可能的, 还是必须显示为 < code> suggestHandler ?
以 @ proppy s 回答 : strong> 为基础的 < proppy s ans answer: strong> 更正代码
class Webapp2HandlerAdapter(webapp2.BaseHandlerAdapter):
def __call__(self, request, response, exception):
request.route_args = {}
request.route_args[ exception ] = exception
handler = self.handler(request, response)
return handler.get()
class Handle404(MyBaseHandler):
def get(self):
self.render(filename="404.html",
page_title="404",
exception=self.request.route_args[ exception ]
)
app = webapp2.WSGIApplication(urls, debug=True, config=config)
app.error_handlers[404] = Webapp2HandlerAdapter(Handle404)