我有以下看法:Django的REST框架不反序列化作爲原始JSON傳遞數據
class Authenticate(generics.CreateAPIView):
serializer_class = AuthSerializer
def create(self, request):
serializer = AuthSerializer(request.POST)
# Do work here
如果數據被作爲一種形式然而過去了,如果數據被作爲原始JSON通過這種運作良好序列化程序會將其所有字段設置爲無實例化。文檔確實提到應該有任何特定的處理原始JSON參數的東西。
任何幫助,將不勝感激。
UPDATE
我在爲了使可瀏覽API工作下面的解決預期將原料JSON的時候,但我相信一定會有更好的辦法。
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在'_content'鍵內發送JSON。我已經創建了一個函數來識別這是什麼情況,並將json解析爲字典,但我相信必須有更好的方法。 – Raphael