如何在django中接收POST数据

hyd*_*ous 19 django post http payment-gateway

我一直在尝试将支付网关集成到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
Run Code Online (Sandbox Code Playgroud)

在支付网关在输入卡详细信息等之后重定向到的URL的视图中,我正在检查它是否是GET if request.method == "GET"然后将请求传递给函数.当我调试请求时,我可以看到一个空的查询字典.如果我尝试res = request.GET ['paymentid']之类的话,我会收到一条错误消息,指出没有名为paymentid的密钥.

我错过了一些明显的东西吗 我对django还很新,所以我确定我做错了什么.

Ala*_*air 34

res = request.GET['paymentid']将提出一个KeyErrorif paymentid不在GET数据中.

您的示例php代码检查是否paymentid在POST数据中,并设置$payID为''否则:

$payID = isset($_POST['paymentid']) ? $_POST['paymentid'] : ''
Run Code Online (Sandbox Code Playgroud)

python中的等价物是使用get()带有默认参数的方法:

payment_id = request.POST.get('payment_id', '')
Run Code Online (Sandbox Code Playgroud)

在调试时,这就是我所看到的response.GET: <QueryDict: {}>,request.POST: <QueryDict: {}>

看起来好像问题没有访问POST数据,但是没有POST数据.你是怎么调试的?您使用的是浏览器,还是访问您网页的支付网关?如果您分享您的观点,将会很有帮助.

一旦你设法将一些帖子数据提交到你的页面,将示例php转换为python应该不会太棘手.


kaf*_*hau 1

您应该有权访问请求对象上的POST字典。

  • 它本身不是字典,而是“QueryDict”,一种不同类型的映射。 (2认同)