Преобразование 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)