【问题标题】:return value is always None in google-app-engine scriptgoogle-app-engine 脚本中的返回值始终为 None
【发布时间】:2018-06-09 15:43:49
【问题描述】:

我正在使用以下代码来解析 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 中得到了一个非空字典。

知道为什么会发生吗?

【问题讨论】:

    标签: google-app-engine python-2.x google-app-engine-python urlparse url-parsing


    【解决方案1】:

    self.request.path_info 值不是您需要向下传递给urlparse() 以正确提取参数的完整 URL,它删除了查询参数,这就是您没有参数的原因。它在处理程序中也不起作用,您可能已经做了一些额外的更改,因为您尝试过。

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

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

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

    参数

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多