return 值在 google-app-engine 脚本中总是 None
return value is always None in google-app-engine script
我正在使用以下代码在 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。
但是,当在处理程序中使用完全相同的解析代码(而不是作为函数)时 - 解析很好,我在参数中得到了一个非空字典。
知道为什么会这样吗?
self.request.path_info
值不是完整的 URL 您需要传递给 urlparse()
以正确提取参数,它已删除查询参数,这就是为什么你没有参数。它在处理程序内部也不起作用,您可能在尝试之后做了一些额外的更改。
要使用您的 parse_url()
获取参数,请传递完整的 url:
url = self.request.url
params = parse_url(url)
但是你应该注意到所有这些都是不必要的,webapp2
已经包含了一个参数解析器,除了它 returns a MultiDict. From Request data:
params
A dictionary-like object combining the variables GET and POST.
您所要做的就是将其转换为与您的 parse_url()
生成的完全相同的真实字典:
self.response.write(dict(self.request.params))
我正在使用以下代码在 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。 但是,当在处理程序中使用完全相同的解析代码(而不是作为函数)时 - 解析很好,我在参数中得到了一个非空字典。
知道为什么会这样吗?
self.request.path_info
值不是完整的 URL 您需要传递给 urlparse()
以正确提取参数,它已删除查询参数,这就是为什么你没有参数。它在处理程序内部也不起作用,您可能在尝试之后做了一些额外的更改。
要使用您的 parse_url()
获取参数,请传递完整的 url:
url = self.request.url
params = parse_url(url)
但是你应该注意到所有这些都是不必要的,webapp2
已经包含了一个参数解析器,除了它 returns a MultiDict. From Request data:
params
A dictionary-like object combining the variables GET and POST.
您所要做的就是将其转换为与您的 parse_url()
生成的完全相同的真实字典:
self.response.write(dict(self.request.params))