【问题标题】:How to retrieve GET vars in python bottle app如何在 python 瓶应用程序中检索 GET 变量
【发布时间】:2012-10-13 21:56:44
【问题描述】:

我正在尝试使用 Python Bottle 应用程序制作一个简单的 REST api。 我在从请求全局对象中检索 GET 变量时遇到问题。 任何建议如何从 GET 请求中检索它?

【问题讨论】:

    标签: python bottle query-parameters


    【解决方案1】:

    它们存储在request.query 对象中。

    http://bottlepy.org/docs/dev/tutorial.html#query-variables

    看起来您也可以通过将request.query 属性视为字典来访问它们:

    request.query['city']
    

    所以dict(request.query) 会创建一个包含所有查询参数的字典。

    正如@mklauber 所说,这不适用于多字节字符。看起来最好的方法是:

    my_dict = request.query.decode()
    

    或:

    dict(request.query.decode())
    

    拥有dict 而不是<bottle.FormsDict object at 0x000000000391B...> 对象。

    【讨论】:

    • 注意,根据文档,基于 dict 的访问不能正确解码和重新编码多字节字符。
    • 啊,是的,my_dict = request.query.decode() 似乎是正确的方式。
    【解决方案2】:

    如果你想要全部:

    from urllib.parse import parse_qs
    
    dict = parse_qs(request.query_string)
    

    如果你想要一个:

    one = request.GET.get('one', '').strip()
    

    【讨论】:

    • 或者你可以使用request.query.one
    • @f p:它返回一个空字符串以及您的代码。唯一的区别是 request.query.one 始终是一个 Unicode 字符串。
    【解决方案3】:

    你可以试试这个吗:

    对于这个例子:http://localhost:8080/command?param_name=param_value

    在您的代码中:

    param_value = request.query.param_name
    

    【讨论】:

      【解决方案4】:

      来自文档

      name = request.cookies.name
      # is a shortcut for:
      name = request.cookies.getunicode('name') # encoding='utf-8' (default)
      # which basically does this:
      try:
          name = request.cookies.get('name', '').decode('utf-8')
      except UnicodeError:
          name = u''
      

      所以你可能更喜欢使用属性访问器 (request.query.variable_name) 而不是 request.query.get('variable_name')

      另一点是您可以使用 request.params.variable_name,它适用于 GET 和 POST 方法,而不必根据 GET/POST 切换 request.query.variable_name 或 request.forms.variable_name。

      【讨论】:

        猜你喜欢
        • 2019-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-25
        • 2016-03-09
        • 2019-11-13
        • 2012-04-13
        • 1970-01-01
        相关资源
        最近更新 更多