Django request.POST возвращает NONE
Я работаю над Django REST API и одно из представлений выглядит следующим образом :
@api_view(['POST'])
def create(request):
key = request.POST.get('key')
name = request.POST.get("name")
email = request.POST.get("email")
password = request.POST.get("password")
print(key)
if(key=='0'):
user = Users(name=name,email=email,password=password)
user.save()
return Response("User Created Successfully")
else:
return Response("Invalid Key")
Когда я отправляю POST запрос со всеми надлежащими параметрами, я получаю key напечатанный как NONE, но я попробовал заменить POST на GET везде, как показано ниже, и затем отправка GET запроса действительно работает нормально, но POST запрос не работает :
@api_view(['GET'])
def create(request):
key = request.GET.get('key')
name = request.GET.get("name")
email = request.GET.get("email")
password = request.GET.get("password")
print(key)
if(key=='0'):
user = Users(name=name,email=email,password=password)
user.save()
return Response("User Created Successfully")
else:
return Response("Invalid Key")
Заранее спасибо!!!
Попробовал GET вместо POST и это работает, но так как это метод ввода значения в БД, поэтому это должен быть POST запрос.
На вашем скриншоте вы передаете параметры запроса в POST
запросе. Вы должны POST
получить данные через вкладку data в postman (formdata, json, etc). Исходя из вашего скриншота, вы можете получить данные, переданные через request.query_params
, но это не рекомендуется для POST
запросов.
В Django REST Framework, request.POST
или данные, переданные через POST
, реструктурируются в request.data
, а данные через GET
запросы передаются в request.query_params
. И то, и другое является QueryDict
, поэтому применимы обычные словарные методы.
Ссылка: https://www.django-rest-framework.org/api-guide/requests/#request-parsing