如何从 url 获取变量
How to get variables from a url
所以在使用 paypalrestsdk 时我已经转到了 paypal,提交了订单并且重定向 url 是:
http://localhost:8000/confirm_order?paymentId=XYZ&token=123&PayerID=ABC
如何从 url 中动态获取这些值??
有几种方法可以将数据传递到服务器。您在这里描述的是 GET
[Django-doc] 参数。
如果您在视图中检查 request.GET
object,您会得到一个(可能是空的)QueryDict
[Django-doc] object。它或多或少充当字典(除了一个键可以包含多个值等)。例如:
def some_view(request):
paymentId= request.GET['paymentId']
token = request.GET['token']
payerID = request.GET['PayerID']
# do some processing
# ...
pass
除了GET
参数外,客户端和服务器之间的数据传输还有其他方式:
- URL 本身(这可以包含一些数据);
request.POST
(这些参数未在 URL 中编码,而是在请求的 header 中编码);
request.FILES
包含上传文件的方法;
request.COOKIES
cookie数据,在header中发送,我们可以在session期间发送cookies来存储一些数据;和
request.META
这在请求中包含 headers。
就这么简单:
对于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)
...
在这种情况下,如果 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']
或
payerID = request.GET.get('PayerID')
# do some processing
# ...
pass
在这种情况下,即使您不发送查询参数,那些变量也包含 None
所以在使用 paypalrestsdk 时我已经转到了 paypal,提交了订单并且重定向 url 是:
http://localhost:8000/confirm_order?paymentId=XYZ&token=123&PayerID=ABC
如何从 url 中动态获取这些值??
有几种方法可以将数据传递到服务器。您在这里描述的是 GET
[Django-doc] 参数。
如果您在视图中检查 request.GET
object,您会得到一个(可能是空的)QueryDict
[Django-doc] object。它或多或少充当字典(除了一个键可以包含多个值等)。例如:
def some_view(request):
paymentId= request.GET['paymentId']
token = request.GET['token']
payerID = request.GET['PayerID']
# do some processing
# ...
pass
除了GET
参数外,客户端和服务器之间的数据传输还有其他方式:
- URL 本身(这可以包含一些数据);
request.POST
(这些参数未在 URL 中编码,而是在请求的 header 中编码);request.FILES
包含上传文件的方法;request.COOKIES
cookie数据,在header中发送,我们可以在session期间发送cookies来存储一些数据;和request.META
这在请求中包含 headers。
就这么简单:
对于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)
...
在这种情况下,如果 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']
或
payerID = request.GET.get('PayerID')
# do some processing
# ...
pass
在这种情况下,即使您不发送查询参数,那些变量也包含 None