全域性處理例外情況
假設你已經實現了一些邏輯來檢測修改資料庫中物件的嘗試,而提交更改的客戶端沒有最新的修改。如果發生這種情況,則引發自定義異常 ConfictError(detailed_message)
。
現在,你希望在發生此錯誤時返回 HTTP 409(Confict)
狀態程式碼。你通常可以使用它作為中介軟體,而不是在每個可能引發此異常的檢視中處理它。
class ConfictErrorHandlingMiddleware:
def process_exception(self, request, exception):
if not isinstance(exception, ConflictError):
return # Propagate other exceptions, we only handle ConflictError
context = dict(confict_details=str(exception))
return TemplateResponse(request, '409.html', context, status=409)