Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按传递的顺序检索URL参数-django_Python_Django_Django Urls_Path Parameter - Fatal编程技术网

Python 按传递的顺序检索URL参数-django

Python 按传递的顺序检索URL参数-django,python,django,django-urls,path-parameter,Python,Django,Django Urls,Path Parameter,我试图检索传递到函数中的URL参数,按照它们实际传递的顺序。 这一点之所以重要,是因为它是一个支付提供商集成,它通过连接传递的值(按传递顺序)来计算哈希值。 因此,基于此,我需要按照参数在实际URL中传递的顺序访问参数,连接它们,然后添加一个MD5密钥,该密钥对我的帐户保密,以验证请求 例如: 如果我通过request.GET访问请求,我将获得命令dict 伪码 def callback(request): keys_concatenated = "" for va

我试图检索传递到函数中的URL参数,按照它们实际传递的顺序。 这一点之所以重要,是因为它是一个支付提供商集成,它通过连接传递的值(按传递顺序)来计算哈希值。 因此,基于此,我需要按照参数在实际URL中传递的顺序访问参数,连接它们,然后添加一个MD5密钥,该密钥对我的帐户保密,以验证请求

例如:

如果我通过request.GET访问请求,我将获得命令dict

伪码

def callback(request):
  keys_concatenated = ""
  for value in request.GET:
    if value == "hash":
      pass
    else:
      keys_concatenated = keys_concatenated + request.GET[value]
这将生成一个字符串,如:USD202001011234567 从提供程序生成的散列,该散列保持顺序,因此期望值 20200101234567美元

在urls.py中定义参数并不是我真正想要的,因为支付提供商公开表示,它们可能会更改传递的参数,从而破坏实现。
我也不知道他们不时传递的实际顺序。

您可以使用python内置的
urllib.parse
解析URL参数,同时保持它们的顺序

一个简单的例子:

来自urllib.parse import parse\u qsl的
>>
>>>parse_qsl('date=20200101,currency=USD,txnid=1234567,hash=thegeneratedhas')
[('date','20200101'),('currency','USD'),('txnid','1234567'),('hash','thegeneratedhas')]
>>>

您可以使用python内置的
urllib.parse
解析URL参数,同时维护它们的顺序

一个简单的例子:

来自urllib.parse import parse\u qsl的
>>
>>>parse_qsl('date=20200101,currency=USD,txnid=1234567,hash=thegeneratedhas')
[('date','20200101'),('currency','USD'),('txnid','1234567'),('hash','thegeneratedhas')]
>>>

您最好通过查询参数或kwargs获取所需的参数。通过这种方式,您可以轻松获取所需内容。如果您可以访问get URL字符串并按
进行拆分,则很可能可以做到这一点。现在您得到了确切的请求URL,它是按照接收顺序排列的。根据经验,通过对象访问参数会得到一个有序的dict。您最好通过查询参数或kwargs获得所需的参数。通过这种方式,您可以轻松获取所需内容。如果您可以访问get URL字符串并按
进行拆分,则很可能可以做到这一点。现在您得到了确切的请求URL,它是按照接收顺序排列的。根据经验,通过对象访问参数会得到一个有序的dict。