我使用以下代码来解析google-app-engine脚本中的url:
from urlparse import urlparse, parse_qs
def parse_url(url):
parsed_url = urlparse(url)
params = parse_qs(parsed_url.query)
return params
class Handler(webapp2.RequestHandler):
def get(self):
url = self.request.path_info
params = parse_url(url)
self.response.write(params)
调用函数后,Params始终为None。然而,当在处理程序中使用完全相同的解析代码时(而不是作为函数)-解析效果很好,并且我在params中得到了一个非空的字典。
你知道为什么会这样吗?
发布于 2018-06-10 01:49:13
URL值并不是您需要传递给urlparse()
以正确提取参数的完整self.request.path_info
,它去掉了查询参数,这就是您没有得到参数的原因。它在处理程序中也不起作用,您可能在尝试之后做了一些额外的更改。
要使用parse_url()
获取参数,请传递完整的url:
url = self.request.url
params = parse_url(url)
但是您应该注意到,所有这些都是不必要的,除了返回一个MultiDict之外,webapp2
已经包含了一个参数解析器。来自Request data
参数
一个结合了GET和POST变量的类似字典的对象。
您所要做的就是将其转换为与parse_url()
生成的字典完全相同的真实字典:
self.response.write(dict(self.request.params))
https://stackoverflow.com/questions/50775935
复制相似问题