【问题标题】:How to send bulk data in url?如何在 url 中发送批量数据?
【发布时间】:2012-03-27 15:40:46
【问题描述】:

我必须通过 url 发送批量数据项以在服务器端进行处理。

可以用get方法发送吗?

 list1 = ["string1","string2","string3","string4"]
 list2 = ["domain_string1","domain_string2"]

 url = http://127.0.0.1/search?l=list1&l2=list2

这些列表应该如何传递?

这些项目列表会动态增长。有时我们会在每个列表中获得 10 个项目

给我指路?

【问题讨论】:

    标签: python django get


    【解决方案1】:

    一般来说,最好避免在 GET 请求中使用长查询字符串。一个很好的参考问题是 SO question What is the maximum length of a URL?。您不想超过 2000 个字符。

    如果您的项目总是适合这个长度,您可以使用urllib.urlencode 来转换您的参数:

    >>> list1 = ["string1","string2","string3","string4"]
    >>> list2 = ["domain_string1","domain_string2"]
    >>> allparams = map(lambda x: ("list1", x), list1)
    >>> allparams += map(lambda x: ("list2", x), list2)
    >>> import urllib
    >>> urllib.urlencode(allparams)
    'list1=string1&list1=string2&list1=string3&list1=string4&list2=domain_string1&list2=domain_string2'
    

    相反,您可以使用 POST 请求。我强烈推荐requests 库:

    import requests
    r = requests.post("http://127.0.0.1/search", data=allparams)
    

    【讨论】:

    • 发送它们的适当方式是 ?l1=string1&l1=string2&l2=string3 等。这是 URL 格式化的标准。
    • 对了,我忘了你可以复制查询参数。我已经更新了答案。
    【解决方案2】:

    你可以用相同的url变量名全部发送

    "http://localhost/search?urlvar=1&urlvar=2&urlvar=3"
    

    request.GET.getlist("urlvar");

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-03
      相关资源
      最近更新 更多