私は、次のビューがあります。Djangoの残りFrameworkは、生のJSONとして渡されたデータをデシリアライズしない
class Authenticate(generics.CreateAPIView):
serializer_class = AuthSerializer
def create(self, request):
serializer = AuthSerializer(request.POST)
# Do work here
データは、生のJSONとして渡された場合、データが、しかし、フォームとして渡された場合、これがうまく機能シリアライザは、そのフィールドがNoneに設定された状態でインスタンス化されます。ドキュメントには、未処理のJSON引数を処理するための特定のものが必要であることが記載されています。
ご協力いただければ幸いです。
UPDATE
私は予想通り、生のJSONを渡すときにブラウズ可能なAPIの仕事をするために周りに次の仕事を持っているが、私はより良い方法がなければならないと考えています。
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
エラーは何ですか?または、実際にエラーが発生しましたか? –
シリアライザはNonesで初期化されます。問題は、Browsable APIがJSONを '_content'キーの中に送信することです。私はこれがいつの時であるかを特定し、jsonをdictに構文解析する関数を作成しましたが、より良い方法が必要であると確信しています。 – Raphael