Wie könnte man Ausnahmen global mit Flask behandeln? Ich habe Wege gefunden, die folgenden verwenden, um benutzerdefinierte db Interaktionen zu behandeln:Flask globale Ausnahmebehandlung
try:
sess.add(cat2)
sess.commit()
except sqlalchemy.exc.IntegrityError, exc:
reason = exc.message
if reason.endswith('is not unique'):
print "%s already exists" % exc.params[0]
sess.rollback()
Das Problem mit try
-except
ist ich muss, dass auf jedem Aspekt meines Code ausführen würde. Ich kann bessere Möglichkeiten finden, das für benutzerdefinierten Code zu tun. Meine Frage richtet sich mehr auf globale Fang- und Handling für:
apimanager.create_api(
Model,
collection_name="models",
**base_writable_api_settings
)
ich gefunden habe, dass diese apimanager
akzeptiert validation_exceptions
: [ValidationError
], aber ich habe keine Beispiele dafür verwendet werden, gefunden.
Ich möchte immer noch eine höhere Stufe der Behandlung, die Auswirkungen auf alle Db-Interaktionen mit einem einfachen Konzept von "Wenn dieser Fehler: dies zeigen, wenn ein anderer Fehler: etwas anderes anzeigen" automatisch auf alle Interaktionen/Ausnahmen automatisch ohne mich einschließlich es auf jeder apimanager
(setzen es in meine base_writable_api_settings
ist in Ordnung, denke ich). (IntegrityError
, NameError
, DataError
, DatabaseError
usw.)
[Hier] (http://flask.pooco.org/docs/0.11/api/#flask.Flask.errorhandler) ist die relevante Dokumentation! –
Könnten Sie mir bitte sagen, wie dies zu verbinden: apimanager.create_api ( Modell, collection_name = „Modelle“, ** base_writable_api_settings) Derzeit ist mein Ziel für eine benutzerdefinierte Nachricht zu erhalten: IntegrityError. Das gilt für alle api_manager. 'Code base_api_settings = { "exclude_columns": [ 'Passwort', 'user.password', 'Gruppen', 'registration_token',‚Benutzer.registration_token '], "max_results_per_page": 100, "validation_exceptions": [ValidationError] } ' – draxous
Ich habe diese verschiedenen Möglichkeiten ausprobiert. Jedes Mal, wenn ich einen doppelten Eintrag einreichen erhalte ich den Standard: { "message": "IntegrityError" } Hier ist ein Pastebin: http://pastebin.com/7Asb08kE – draxous