Почему я отправляю данные в Django POST, но получаю их в GET? - PullRequest
1 голос
/ 08 мая 2020

Я новичок в Django и сегодня построил простой тест.

def login_web(request):
    request.encoding = "utf-8"
    print("POST type ", request.method)
    print("body : ", request.body)
    print("POST : ", request.POST)
    print("GET : ", request.GET)
    username = request.POST.get("username")
    password = request.POST.get("password")
    print(username)
    print(password)

    user = auth.authenticate(username=username, password=password)
    if user is not None and user.is_active:
        print("YR1")
        auth.login(request, user)
        return JsonResponse({"foo": "bar1"})
    else:
        print("IM2")
        return JsonResponse({"foo": "bar2"})

Я использовал Postman для отправки ему почтового запроса.

Но результат очень запутанный.

POST type  POST
body :  b''
POST :  <QueryDict: {}>
GET :  <QueryDict: {'username': ['chivier'], 'password': ['123456']}>
None
None
IM2

Я проверил с помощью request.method, уверен, что отправил POST-запрос.

Я должен получить их в request.POST, но почему они появляются в request.GET.

1 Ответ

1 голос
/ 08 мая 2020

Это потому, что вы отправляете данные как query parameters. Параметры запроса всегда доступны через request.GET, это не зависит от типа запроса. Отправьте данные в теле запроса и получите доступ к ним через request.POST.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...