Ho la seguente vista:Django Riposo quadro non deserializzare dati passati come JSON grezzo
class Authenticate(generics.CreateAPIView):
serializer_class = AuthSerializer
def create(self, request):
serializer = AuthSerializer(request.POST)
# Do work here
Questo funziona bene se il dato viene passato come forma, tuttavia, se i dati viene passato come JSON grezzo il serializzatore viene istanziato con tutti i suoi campi impostati su Nessuno. La documentazione dice che dovrebbe esserci qualcosa di specifico per l'elaborazione di un argomento JSON non elaborato.
Qualsiasi aiuto sarebbe apprezzato.
UPDATE
Ho il seguente lavoro intorno al fine di rendere il lavoro API Browsable come previsto quando si passa una JSON crudo ma che ci deve essere un modo migliore.
def parse_data(request):
# If this key exists, it means that a raw JSON was passed via the Browsable API
if '_content' in request.POST:
stream = StringIO(request.POST['_content'])
return JSONParser().parse(stream)
return request.POST
class Authenticate(generics.CreateAPIView):
serializer_class = AuthSerializer
def create(self, request):
serializer = AuthSerializer(parse_data(request))
# Do work here
qual è l'errore che hai ottenuto? O hai effettivamente ricevuto qualche errore? –
Il serializzatore è inizializzato con Nones. Il problema è che l'API Sfogliabile invia il JSON all'interno di una chiave '_content'. Ho creato una funzione per identificare quando questo è il caso e parsing the json to a dict ma credo che ci deve essere un modo migliore. – Raphael