给定如下的URL,如何解析查询参数的值?例如,在本例中,我想要some_key的值。

/some_path?some_key=some_value'

我在我的环境中使用Django;请求对象上是否有可以帮助我的方法?

我尝试使用self.request.get('some_key'),但它没有返回值some_value,因为我希望。


当前回答

def getParams(url):
    params = url.split("?")[1]
    params = params.split('=')
    pairs = zip(params[0::2], params[1::2])
    answer = dict((k,v) for k,v in pairs)

希望这能有所帮助

其他回答

我知道这有点晚了,但自从我发现自己今天在这里,我想这可能对其他人有用的答案。

import urlparse
url = 'http://example.com/?q=abc&p=123'
parsed = urlparse.urlparse(url)
params = urlparse.parse_qsl(parsed.query)
for x,y in params:
    print "Parameter = "+x,"Value = "+y

使用parse_qsl(),“数据以名称、值对的列表形式返回。”

您引用的url是一个查询类型,我看到请求对象支持一个称为arguments的方法来获取查询参数。你可能还想尝试self.request.get('def')直接从对象中获取你的值。

在纯Python中:

def get_param_from_url(url, param_name):
    return [i.split("=")[-1] for i in url.split("?", 1)[-1].split("&") if i.startswith(param_name + "=")][0]

没有使用Django,尝试使用Python 3.9。它也可以在处理程序中使用下面的代码片段来检索:

考虑URL为-

http://localhost:8081/api/v1/users?query_key=abcdef12345

和handler方法为:

@routes.get('/api/v1/users')
async def handler_users(request):
    query_key = request.url.query['query_key']

参数= dict([part.split('=')) for part in get_parsed_url [4] .split (' & '))

这一点很简单。变量参数将包含所有参数的字典。