如何在django中接收POST数据

时间:2011-09-27 17:59:05

标签: django http post 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

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

我错过了一些明显的东西吗?我还是django的新手,所以我确定我做错了。

2 个答案:

答案 0 :(得分:32)

如果res = request.GET['paymentid']不在GET数据中,则

KeyError会引发paymentid

您的示例php代码会检查POST数据中是否有paymentid,否则会将$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应该不会太棘手。

答案 1 :(得分:1)

您应该可以访问请求对象上的POST字典。