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

/some_path?some_key=some_value'

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

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


当前回答

我不想搞砸额外的库。这里建议的简单方法也没有奏效。最后,不是在请求对象上,但我可以通过self.GET.get('XXX')获得一个get参数,没有所有的麻烦:

...
def get_context_data(self, **kwargs):
    context = super(SomeView, self).get_context_data(**kwargs)
    context['XXX'] = self.GET.get('XXX')
...

Python 2.7.18, Django 1.11.20

其他回答

urlparse模块提供了你需要的一切:

urlparse.parse_qs ()

有一个很好的库w3lib.url

from w3lib.url import url_query_parameter
url = "/abc?def=ghi"
print url_query_parameter(url, 'def')
ghi

没有使用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 (' & '))

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

我不想搞砸额外的库。这里建议的简单方法也没有奏效。最后,不是在请求对象上,但我可以通过self.GET.get('XXX')获得一个get参数,没有所有的麻烦:

...
def get_context_data(self, **kwargs):
    context = super(SomeView, self).get_context_data(**kwargs)
    context['XXX'] = self.GET.get('XXX')
...

Python 2.7.18, Django 1.11.20