在使用paypalrestsdk时,我去了paypal,提交了订单,重定向网址为:
http://localhost:8000/confirm_order?paymentId=XYZ&token=123&PayerID=ABC
如何从网址动态获取这些值?
答案 0 :(得分:3)
有几种方法可以将数据传递到服务器。您在此处描述的是GET
[Django-doc]参数。
如果在视图中检查request.GET
对象,则会得到一个(可能为空)QueryDict
[Django-doc]对象。它或多或少地充当字典(键可以包含多个值等)。例如:
def some_view(request):
paymentId= request.GET['paymentId']
token = request.GET['token']
payerID = request.GET['PayerID']
# do some processing
# ...
pass
除了GET
参数之外,还有其他方法可以在客户端和服务器之间传输数据:
request.POST
(这些参数不是在URL中编码的,而是请求的标头); request.FILES
包含上传文件的方式; request.COOKIES
cookie数据,在标题中发送,我们可以在会话期间将cookie发送回以存储一些数据;和request.META
包含请求中的标头。答案 1 :(得分:0)
就这么简单:
对于 GET 请求:
// ...inside you view function
if request.method == 'GET':
// GET action
paymentId = request.GET['paymentId']
print('Payment ID:', paymentId)
...
对于 POST 请求:
if request.method == 'POST':
// POST action
paymentId = request.POST['paymentId']
print('Payment ID:', paymentId)
...
答案 2 :(得分:0)
在这种情况下,如果URL中没有查询参数,它将中断,
代替此
def some_view(request):
paymentId= request.GET['paymentId']
token = request.GET['token']
payerID = request.GET['PayerID']
# do some processing
# ...
pass
尝试这样更改代码
def some_view(request):
paymentId= request.query_params.get('paymentId')
token = request.query_params.get['token']
OR
payerID = request.GET.get('PayerID')
# do some processing
# ...
pass
在这种情况下,即使您不发送查询参数,这些变量也将包含None