python / intermediate
Snippet
Benutzerdefinierter View-Exception-Handler-Dekorator für Datenbankfehler
Python-Closure-Dekoratoren umschließen View-Funktionen, um spezifische Laufzeitfehler wie Djangos `IntegrityError` abzufangen. `functools.wraps` bewahrt dabei View-Metadaten und zentralisiert die Formatierung von HTTP-Fehlerantworten.
snippet.py
python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from functools import wrapsfrom django.db import IntegrityErrorfrom django.http import JsonResponsedef handle_database_errors(view_func):@wraps(view_func)def wrapper(request, *args, **kwargs):try:return view_func(request, *args, **kwargs)except IntegrityError as err:return JsonResponse({"error": "Integrity constraint violation","details": str(err)}, status=400)return wrapper
django
Erklärung
1
def handle_database_errors(view_func):
Definiert eine Dekorator-Funktion höherer Ordnung, die eine View-Funktion entgegennimmt.
2
@wraps(view_func)
Behält Name, Docstring und Signatur der ursprünglichen View-Funktion bei.
3
try:
Führt die umschlossene View-Funktion innerhalb eines geschützten try-Blocks aus.
4
except IntegrityError as err:
Fängt Datenbank-Integritätsfehler ab (z. B. doppelte eindeutige Werte).
5
return JsonResponse({ ... }, status=400)
Gibt ein strukturiertes JSON-Fehler-Payload mit HTTP-Status 400 zurück.