如何从网址获取变量

时间:2018-07-09 11:12:38

标签: python django paypal-rest-sdk

在使用paypalrestsdk时,我去了paypal,提交了订单,重定向网址为:

  

http://localhost:8000/confirm_order?paymentId=XYZ&token=123&PayerID=ABC

如何从网址动态获取这些值?

3 个答案:

答案 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参数之外,还有其他方法可以在客户端和服务器之间传输数据:

  1. URL本身(可以包含一些数据);
  2. request.POST(这些参数不是在URL中编码的,而是请求的标头);
  3. request.FILES包含上传文件的方式;
  4. request.COOKIES cookie数据,在标题中发送,我们可以在会话期间将cookie发送回以存储一些数据;和
  5. 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