2013-05-08 10 views

risposta

16

Semplicemente:

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

Oppure:

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

Oppure:

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

Uno snafu qui che cattura spesso le persone è la stringa vuota. Se mydata è vuoto, fallirà e l'argomento predefinito in get non ti salverà. – ButtersB

1

loads() prende una stringa formattata JSON e lo trasforma in un oggetto Python come dict o elenco. Nel codice, stai passando dict() come valore predefinito se mydata non esiste in request.POST, mentre dovrebbe essere una stringa, ad esempio "{}". Così si può scrivere -

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

Ricordiamo anche, il valore di request.POST['mydata'] deve essere JSON formattato, altrimenti si otterrà lo stesso errore.