Преобразование django request.body (байты) в json

У меня есть представление на основе класса, в котором есть функция put и я пытаюсь получить request.body в json.

from django.views import View
import json
class StudentView(View):
    def put(self, request):
        body = request.body #b'name=Arpita+kumari+Verma&roll=109&city=USA'
        json_body = json.loads(body) # JSONError 'expecting dict values but given bytes object'
        # I want something like this
        # {
        #      'name':'Arpita kumari Verma',
        #      'roll':'109,
        #      'city':'USA',
        # }
        json_dumped_data = json.dumps(json_body)
        return HttpResponse(json_dumped_data, content_type="application/json")

Потому что в requests.put вы отправляете не json, а данные формы. Вы можете отправить json в requests.put или преобразовать request.body в QueryDict и сделать что-то вроде этого:

json.dumps(dict(QueryDict(request.body)))

У меня есть решение для этого,

json_data_recieved = request.POST
# this method can be used in every request methods (post, put, patch, delete) except get (user request.GET for get methods)
Вернуться на верх