2012-04-12 6 views
2

Was ist der richtige Weg, um JSON nach Django zu posten? Ich habe versucht, Ansichten zu verwenden, aber ich bin nicht sicher, wie man csrf behandelt. Gibt es eine andere Möglichkeit, Ansichten zu umgehen und einfach einen Beitrag von json zu akzeptieren?Wie man JSON nach Django schreibt

+1

Haben Sie auch versucht, den CSRF-Token zu posten? –

+0

Ich hätte klarer sein sollen - dieser Beitrag kommt nicht von Ajax oder irgendeiner Form. Dies ist mehr für eine Web-API ohne jede Genehmigung. Ich muss in der Lage sein, einem anonymen Benutzer zu erlauben, eine json-Nachricht an Django zu senden und mit json zurück zu antworten. – ewhitt

Antwort

3

Ansichten sind, was die Post-Daten behandeln. Es gibt kein Konzept von "Umgehungsansichten", da hier die Verarbeitung einer Anforderung ausgeführt wird.

Dies ist wahrscheinlich das, was Ihr sucht: https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax

Dies zeigt Ihnen, wie (durch die Verwendung von Cookies nämlich) csrf Token mit Ajax behandeln.

Ich könnte Ihnen auch vorschlagen, verlangsamen und versuchen durch das Tutorial hier zu arbeiten: https://docs.djangoproject.com/en/dev/intro/tutorial01/

Sie haben wahrscheinlich eine einfachere Zeit mit django, wenn Sie undertstand wie die Stücke (Modelle, Ansichten, Vorlagen Urls , Formulare usw.) passen zusammen.

Da Sie hinzugefügt haben, dass dies API-Aufrufe sind, ist es am einfachsten, diese Ansichten als csrf_exempt zu markieren. Da Sie vielleicht denken, dass das Erstellen einer API aus Modellen eine häufige Aufgabe ist (ich gehe davon aus, dass Ihre API Modellen entspricht, wie dies häufig der Fall ist und Sie nicht angegeben haben), sollten Sie das Rad nicht neu erfinden und stattdessen Kolben verwenden oder tastypie, um dies einfacher für Sie zu machen: http://djangopackages.com/grids/g/api/

+0

Ich hätte klarer sein sollen - dieser Beitrag kommt nicht von Ajax oder irgendeiner Form. Dies ist mehr für eine Web-API ohne jede Genehmigung. Ich muss in der Lage sein, einem anonymen Benutzer zu erlauben, eine json-Nachricht an Django zu senden und mit json zurück zu antworten. – ewhitt

+0

Dann dekorieren Sie Ihre Ansicht mit csrf_exempt – John

3

Verwenden Sie die @csrf_exempt Dekorateur auf alle API-Ansichten.

Verwandte Themen