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

Вернуться на верх