2010-05-05 43 views
1

我有一箇中間件做了一些處理。在某些情況下,它會引發異常,用戶會看到我的500.html模板 - 正確響應500個http狀態。是否可以從中間件渲染模板?

現在,在某些例外情況下,我想渲染與默認500.html不同的模板。是否有可能/如何實現這一目標?

回答

1

你能趕上這些例外並return a HttpResponse object呈現您的自定義模板。或者,也許重定向也是適當的。

+0

該鏈接已經過期。請更新。 – 2017-01-31 10:26:27

0

是的,沒有。

你可以渲染任何你想要的(你的web服務器有一個很好的解釋如何做到這一點),但用戶是否會看到他的選擇 - 通過他的瀏覽器設置。你可能渲染了一些東西,但瀏覽器仍然顯示一個標準的錯誤頁面。

0

中間件可能是一個解決辦法:

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',