Подтвердить что ты не робот

Как получить данные POST в django

Я пытаюсь интегрировать платежный шлюз на свой сайт в django. У меня возникли проблемы с получением данных ответа из платежного шлюза.

В платежном шлюзе есть образцы документов для php, которые выглядят следующим образом:

$ErrorTx = isset($_POST['Error']) ? $_POST['Error'] : '';               //Error Number
$ErrorResult = isset($_POST['ErrorText']) ? $_POST['ErrorText'] : '';   //Error message
$payID = isset($_POST['paymentid']) ? $_POST['paymentid'] : '';     //Payment Id

В представлении для URL-адреса, с которого перенаправляется платежный шлюз после ввода данных о карте и т.д., я проверяю, является ли это GET if request.method == "GET", а затем передается запрос функции. Когда я отлаживаю запрос, я вижу пустой запрос dict. и если я попробую что-то вроде res = request.GET ['paymentid'], я получаю сообщение об ошибке, в котором говорится, что нет ключа с именем paymentid.

Я пропустил что-то очевидное? Я все еще довольно новичок в django, поэтому я уверен, что я делаю что-то неправильно.

4b9b3361

Ответ 1

res = request.GET['paymentid'] поднимет значение KeyError, если paymentid не находится в данных GET.

Ваш пример кода PHP проверяет, есть ли paymentid в данных POST и устанавливает $payID в '' в противном случае:

$payID = isset($_POST['paymentid']) ? $_POST['paymentid'] : ''

Эквивалент в python заключается в использовании метода get() с аргументом по умолчанию:

payment_id = request.POST.get('payment_id', '')

во время отладки, это то, что я вижу в response.GET: <QueryDict: {}>, request.POST: <QueryDict: {}>

Похоже, что проблема не связана с данными POST, но нет данных POST. Как вы отлаживаете? Используете ли вы свой браузер, или это шлюз оплаты, доступ к вашей странице? Было бы полезно, если бы вы поделились своим мнением.

Как только вам удастся отправить некоторые данные на вашу страницу, не должно быть слишком сложным преобразовать образец php в python.

Ответ 2

У вас должен быть доступ к POST словарь объекта запроса.