我有一箇中間件做了一些處理。在某些情況下,它會引發異常,用戶會看到我的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