[Django] Verschachtelte API-Daten validieren

Django, Flask, Bottle, WSGI, CGI…
Antworten
metty
User
Beiträge: 99
Registriert: Samstag 13. Dezember 2008, 19:30

Hallo zusammen,

ich schreibe für ein Django-Projekt eine API, wo Benutzer Daten abrufen und "speichern" können.
Es wäre alles eigentlich ganz einfach, aber ich trete bei der Validierung von gesendeten Daten auf der Stelle.
Der Benutzer sendet seine Daten per POST-Request im JSON-Format an den Server. Diese Daten werden in eine Python Datenstruktur umgewandelt und sollen dann validiert werden (Länge, Typ usw.). Mein Problem ist, dass die Datenstruktur verschachtelt ist und die Validierung über Forms nicht so einfach funktioniert. Zudem sind einige Teile der Datenstruktur optional und müssen nicht vorkommen.

Hier ein verkürztes Beispiel der Datenstruktur:

Code: Alles auswählen

{'key1':'value1, 'verschachtelt':{'vkey1':'vvalue1', 'vkey2':'vvalue2', ...}, 'key2':'value2', ...}
"key1" und "verschachtelt" sind optional und müssen nicht vorkommen, so dass auch folgende Struktur valide wäre.

Code: Alles auswählen

{'key2':'value2', ...}
Ich habe mir selbst eine Validator Klasse geschrieben, welche die Daten nach einem übergebenen Schema "abklappert" und die Daten überprüft, aber das gefällt mir nicht so ganz, weil hier z.B. Choice-Felder nicht so einfach überprüft werden können. Ein Ansatz mit Django-Forms wäre vielleicht, mehrere Forms zu verwenden. Sprich "Wenn 'key1' vorkommt, validiere mit form1, wenn 'verschachtelt' vorkommt, verwende für die Daten unter 'verschachtelt' form2 etc..." Habt ihr vielleicht einen kleinen Denkanstoß für mich, sonst verzweifle ich hier noch...

Gruß
metty
Antworten