2013-05-08 12 views

Odpowiedz

16

prosto:

json.loads(request.POST.get('mydata', '{}')) 

Lub:

data = json.loads(request.POST['mydata']) if 'mydata' in request.POST else {} 

Lub:

if 'mydata' in request.POST: 
    data = json.loads(request.POST['mydata']) 
else: 
    data = {} # or data = None 
+0

Jednym ze snafu, który często łapie ludzi, jest pusty ciąg. Jeśli mydata jest pusta, to się nie powiedzie, a domyślny argument w get nie uratuje cię. – ButtersB

1

loads() zajmuje json sformatowany ciąg i zamienia ją w obiekt Pythona jak dict lub listy. W swoim kodzie przekazujesz dict() jako wartość domyślną, jeśli mydata nie istnieje w request.POST, a powinien być ciągiem, takim jak "{}". Więc można napisać -

json_data = json.loads(request.POST.get('mydata', "{}")) 

Należy również pamiętać, wartość request.POST['mydata'] musi być sformatowany JSON, albo dostaniesz ten sam błąd.