Tôi có quan điểm như sau:Django Nghỉ ngơi Framework không deserialize dữ liệu thông qua như là JSON liệu
class Authenticate(generics.CreateAPIView):
serializer_class = AuthSerializer
def create(self, request):
serializer = AuthSerializer(request.POST)
# Do work here
này hoạt động tốt nếu dữ liệu được thông qua như là một hình thức, tuy nhiên, nếu dữ liệu được thông qua như là một JSON liệu bộ nối tiếp được khởi tạo với tất cả các trường của nó được đặt thành Không. Tài liệu này đề cập rằng cần có bất kỳ điều gì cụ thể để xử lý một đối số JSON thô.
Mọi trợ giúp sẽ được đánh giá cao.
CẬP NHẬT
Tôi có công việc sau đây xung quanh để làm cho công việc API Có thể xem như mong đợi khi đi qua một JSON thô nhưng tôi tin rằng phải có một cách tốt hơn.
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
lỗi của bạn là gì? Hay bạn thực sự gặp phải lỗi nào? –
Bộ nối tiếp được khởi tạo bằng Nones. Vấn đề là API có thể duyệt được gửi JSON bên trong một khóa '_content'. Tôi đã tạo ra một chức năng để xác định khi nào là trường hợp này và phân tích cú pháp json thành một dict nhưng tôi tin rằng phải có một cách tốt hơn. – Raphael