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