给定如下的URL,如何解析查询参数的值?例如,在本例中,我想要some_key的值。
/some_path?some_key=some_value'
我在我的环境中使用Django;请求对象上是否有可以帮助我的方法?
我尝试使用self.request.get('some_key'),但它没有返回值some_value,因为我希望。
给定如下的URL,如何解析查询参数的值?例如,在本例中,我想要some_key的值。
/some_path?some_key=some_value'
我在我的环境中使用Django;请求对象上是否有可以帮助我的方法?
我尝试使用self.request.get('some_key'),但它没有返回值some_value,因为我希望。
当前回答
我很惊讶这个答案还没出现在这里。使用:
request.GET.get('variable_name')
这将从“get”字典中“获取”变量,如果它存在则返回“variable_name”值,如果不存在则返回None对象。
其他回答
urlparse模块提供了你需要的一切:
urlparse.parse_qs ()
有一个很好的库w3lib.url
from w3lib.url import url_query_parameter
url = "/abc?def=ghi"
print url_query_parameter(url, 'def')
ghi
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)
希望这能有所帮助
我不想搞砸额外的库。这里建议的简单方法也没有奏效。最后,不是在请求对象上,但我可以通过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
我发现对于Tornado的用户来说没有答案:
key = self.request.query_arguments.get("key", None)
此方法必须在派生自以下处理程序的处理程序中工作:
tornado.web.RequestHandler
当无法找到所请求的键时,此方法将返回None。这为您节省了一些异常处理。