返回值在谷歌应用引擎脚本中始终为 None



我使用以下代码在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) 

参数在调用函数后始终为 None。 但是,当在处理程序中使用完全相同的解析代码(而不是作为函数(时 - 解析很好,我在参数中得到了一个非空字典。

知道为什么会发生吗?

self.request.path_info值不是您需要传递给urlparse()才能正确提取参数的完整 URL,它剥离了查询参数,这就是您没有获得参数的原因。它在处理程序中也不起作用,自从您尝试这样做以来,您可能已经进行了一些其他更改。

要使用parse_url()获取参数,请传递完整的 url:

url = self.request.url
params = parse_url(url)

但是你应该注意,所有这些都是不必要的,webapp2已经包含一个参数解析器,除了它返回一个MultiDict。从请求数据:

参数

一个类似字典的对象,结合了变量 GET 和 POST。

您所要做的就是将其转换为与您的parse_url()生成的字典相同的真实字典:

self.response.write(dict(self.request.params))

相关内容

  • 没有找到相关文章

最新更新