我试图使用urlparse函数从URL获取参数,但是当我试图解码参数时,字符串发生了变化并给了我一个错误。这样的:
url = request.url
parsed = urlparse.urlparse(url)
log.info(parsed)
url_code = urlparse.parse_qs(parsed.query)['id_compra']
log.info(url_code)
输出如下所示
INFO http://c34f30683db9.ngrok.io/payment?id_compra=%2FYkv86B1UdMds9CuYr%2FbMCD3BpKL%2FzElNtVRc8KiALXWgtB343EjrUsmTObrBzv48FshzRu%2FD3Www4B+5SAxcb2xx78=
INFO ParseResult(scheme='http', netloc='c34f30683db9.ngrok.io', path='/payment', params='', query='id_compra=%2FYkv86B1UdMds9CuYr%2FbMCD3BpKL%2FzElNtVRc8KiALXWgtB343EjrUsmTObrBzv48FshzRu%2FD3Www4B+5SAxcb2xx78=', fragment='')
INFO ['/Ykv86B1UdMds9CuYr/bMCD3BpKL/zElNtVRc8KiALXWgtB343EjrUsmTObrBzv48FshzRu/D3Www4B 5SAxcb2xx78=']
我想获得参数,就像它在URL中一样,但结果将字符'+'更改为空白空间,我不希望发生这种情况。
您可以引用查询以返回到urlsafe格式。Urlparse一些简单的取消引用的查询,你只需要反转这个过程。
from urllib.parse import quote
urlsafequery = quote(urlquery)