【问题标题】:use a variable in python as string query to pass parameter in url使用python中的变量作为字符串查询在url中传递参数
【发布时间】:2015-06-21 17:30:35
【问题描述】:

我想使用查询字符串通过 URL 传递值。例如:

http://127.0.0.1:5000/data?key=xxxx&secret=xxxx

在 Python 中,如何将变量添加到 URL?例如:

key = "xxxx"
secret = "xxxx"
url = "http://127.0.0.1:5000/data?key=[WHAT_GOES_HERE]&secret=[WHAT_GOES_HERE]"

【问题讨论】:

    标签: python http url


    【解决方案1】:

    最安全的方法是:

    import urllib
    
    args = {"key": "xxxx", "secret": "yyyy"}
    url = "http://127.0.0.1:5000/data?{}".format(urllib.urlencode(args))
    

    您需要确保您的值是 url 编码的。

    唯一可以安全发送非编码的字符是 [0-9a-zA-Z] 和 $-_.+!*'()

    其他一切都需要编码。

    更多信息请阅读RFC1738第2页

    【讨论】:

    • 收到url后,怎么解码args?
    • 通过 args{key} 你可以得到它
    【解决方案2】:

    我认为使用格式化程序更好(当你有很多参数时,这比 %s 更清楚):

    >>> key = "xxxx"
    >>> secret = "xxxx"
    >>> url = "http://127.0.0.1:5000/data?key={key}&secret={secret}".format(key=key, secret=secret)
    >>> print(url)
    http://127.0.0.1:5000/data?key=xxxx&secret=xxxx
    

    【讨论】:

      【解决方案3】:

      连接你的字符串和你的变量:

      key = "xxxx"
      secret = "xxxx"
      url = "http://127.0.0.1:5000/data?key="+key+"&secret="+secret
      

      【讨论】:

        【解决方案4】:

        你是说这个吗?

        key = "xxxx"
        secret = "xxxx"
        url = "http://127.0.0.1:5000/data?key=%s&secret=%s" % (key, secret)
        

        【讨论】:

        • 想一想key = abc&foo=1时查询字符串的样子。查询字符串应始终进行编码。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-22
        • 1970-01-01
        • 1970-01-01
        • 2010-12-25
        • 2015-12-25
        相关资源
        最近更新 更多