Как получить данные 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, поэтому я уверен, что я делаю что-то неправильно.
Ответы
Ответ 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 словарь объекта запроса.