我有一个中间件做了一些处理。在某些情况下,它会引发异常,用户会看到我的500.html
模板 - 正确响应500个http状态。是否可以从中间件渲染模板?
现在,在某些例外情况下,我想渲染与默认500.html
不同的模板。是否有可能/如何实现这一目标?
我有一个中间件做了一些处理。在某些情况下,它会引发异常,用户会看到我的500.html
模板 - 正确响应500个http状态。是否可以从中间件渲染模板?
现在,在某些例外情况下,我想渲染与默认500.html
不同的模板。是否有可能/如何实现这一目标?
你能赶上这些例外并return a HttpResponse object呈现您的自定义模板。或者,也许重定向也是适当的。
是的,没有。
你可以渲染任何你想要的(你的web服务器有一个很好的解释如何做到这一点),但用户是否会看到他的选择 - 通过他的浏览器设置。你可能渲染了一些东西,但浏览器仍然显示一个标准的错误页面。
中间件可能是一个解决办法:
class MyExceptionMiddleware:
def process_exception(self, request, exception):
if isinstance(exception, CustomException):
template = loader.get_template('Other500.html')
context = RequestContext(request, {'message': 'Custom Message'})
return HttpResponseForbidden(template.render(context))
return None
不要忘记注册在settings.py的中间件:
MIDDLEWARE_CLASSES = (
....
'app.middleware.MyExceptionMiddleware',
该链接已经过期。请更新。 – 2017-01-31 10:26:27