handler500
으로 설정된 장고 응용 프로그램이 있습니다. 그것에 사용자 지정 예외 처리기를 추가하고 싶습니다. 프로세스 예외를 처리하는 미들웨어를 생성합니다.django 예외 처리기 미들웨어 및 handler500
뷰가 예외를 발생시키는 경우 장고는 process_exception()을 호출합니다. process_exception()은 None 또는 HttpResponse 객체를 반환해야합니다. HttpResponse 객체를 반환하면 응답이 브라우저에 반환됩니다. 그렇지 않으면, 기본 예외에 차기 처리 https://docs.djangoproject.com/en/dev/topics/http/middleware/?from=olddocs#process-exception
내 같은 ErrorMiddleware
은 같습니다.이 경우,
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
브라우저를 결코 :
class ErrorMiddleware(object):
def process_exception(self, request, exception):
try:
#logic goes here
except Exception:
pass
return None
내 settings
의 모습 없습니다 예외가있는 페이지에서 응답을받습니다. 목록에 미들웨어가 없어도 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' 정의로 모듈을 보여줄 수 있습니까? –