我有一個Django應用程序與handler500
設置。我想添加自定義的異常處理程序。 我創建了一個處理進程異常的中間件:django異常處理程序中間件和處理程序500
Django在視圖引發異常時調用process_exception()。 process_exception()應該返回None或HttpResponse對象。如果它返回一個HttpResponse對象,則該響應將返回給瀏覽器。否則,默認的異常處理踢
https://docs.djangoproject.com/en/dev/topics/http/middleware/?from=olddocs#process-exception
我ErrorMiddleware
樣子:
class ErrorMiddleware(object):
def process_exception(self, request, exception):
try:
#logic goes here
except Exception:
pass
return None
我settings
樣子:
MIDDLEWARE_CLASSES = (
'my.error.ErrorMiddleware',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
DEBUG = False
在這種情況下,我的瀏覽器就不會獲得來自頁面的響應,但有異常。雖然沒有我的中間件名單,我得到handler500
正常工作。
我希望執行默認的異常處理機制,而無需在我的中間件中明確調用handler500
視圖。
UPD:
handler500模塊如下所示:
#imports ....
def custom_500(request):
""" Return an error ID (hash) that can be provided to support """
return render(request, '500.html', {
'timestamp': datetime.datetime.now().isoformat(),
'diagcode': "hello",
}
)
你可以用你的'handler500'定義來顯示一個模塊嗎? –