【发布时间】:2020-10-25 18:45:22
【问题描述】:
我正在尝试检索传递给函数的 URL 参数,按照它们实际传递的顺序。 这很重要的原因是它的支付提供商集成,它通过连接传递的值(按照传递的顺序)计算散列。 因此,基于此,我需要按照参数在实际 URL 中传递的顺序访问参数,将它们连接起来,然后添加一个对我的帐户保密的 MD5 密钥来验证请求。
例如: http://example.com/order/callback?date=20200101¤cy=USD&txnid=1234567&hash=thegeneratedhas
如果我通过 request.GET 访问请求,我会得到有序的字典。
伪代码
def callback(request):
keys_concatenated = ""
for value in request.GET:
if value == "hash":
pass
else:
keys_concatenated = keys_concatenated + request.GET[value]
这会生成如下字符串:USD202001011234567 提供者生成的哈希值,订单被保留,因此期望值 20200101USD1234567
在 urls.py 中定义参数并不是我真正想要的,因为支付提供商公开表示他们可能会更改传递的参数,因此会破坏实现。 我也不知道他们不时传递它的实际顺序。
【问题讨论】:
-
您最好通过查询参数或 kwargs 获取您想要的参数。这样你就可以轻松得到你想要的。
-
如果您可以访问 GET URL 字符串并按
?拆分,您可能可以这样做。现在你得到了确切的请求 URL,它是按照它们被接收的顺序。根据经验,通过对象访问参数将为您提供有序的字典。
标签: python django django-urls path-parameter