[Django] Verschachtelte API-Daten validieren
Verfasst: Sonntag 14. November 2010, 11:22
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:
"key1" und "verschachtelt" sind optional und müssen nicht vorkommen, so dass auch folgende Struktur valide wäre.
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
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', ...}
Code: Alles auswählen
{'key2':'value2', ...}
Gruß
metty