/ / Wie empfange ich ein Wörterbuch in Post Data Python?

So erhalten Sie ein Wörterbuch in Post Data Python - Python, Django, Wörterbuch, Parameter, Anfrage

Ich versuche, Array als Parameter an die API zu senden, die Python und verwendet django Rahmen.

Hier ist mein clientseitiger Code, der für den Zugriff auf die verwendet wird api:

$.ajax(
type: "POST",
url:    "http://example.com/api/users",
data:   {user:{name:"Rohit Khatri", age:20, father_name:"S.K"},type:"info"},
complete: function(response) {
console.log(response);
}
);

Hier ist die Ansicht, in der ich versuche, auf die Anforderungsparameter zuzugreifen

def get_users(request):
print(request.POST.get("ids"))

und wenn ich versuche zuzugreifen ids Parameter, Es gibt keine. Wenn jemand das gleiche Problem hat, helfen Sie mir bitte.

Antworten:

3 für die Antwort № 1

Sie können versuchen, die Liste wie folgt abzurufen:

request.POST.getlist("ids[]")

Hinweis: Sie werden es besser haben, wenn Sie Ihre Daten als senden / empfangen JSON. Sie müssen zuerst die Accept und Content-Type Header zu application/json während Sie die Anfrage senden und dann das json-Objekt mit in ein Python-Objekt konvertieren json.loads. Beispiel wie folgt:

Javascript / AJAX

$.ajax(
type: "POST",
url:    "http://example.com/api/users",
contentType: "application/json"
data:   {ids:[1,2,3,4,5],type:"info"},
complete: function(response) {
console.log(response);
}
);

Django

import json

def get_users(request):
ids = request.POST.get("ids")
if ids:
ids = json.loads(ids)

Aktualisieren:

Für den Fall, dass Sie kompliziertere Daten wie ein Objekt (Wörterbuch) verwenden müssen, ist die Verwendung von Json die beste Wahl, und es funktioniert ähnlich wie im obigen Beispiel.

Javascript / AJAX

$.ajax(
type: "POST",
url:    "http://example.com/api/users",
contentType: "application/json"
data:   {ids:{"x":"a", "y":"b", "z":"c"}, type:"info"},
complete: function(response) {
console.log(response);
}
);

Django

import json

def get_users(request):
ids = request.POST.get("ids")
if ids:
ids = json.loads(ids)