2012-03-27 39 views
1

我必須通過URL發送批量數據項以在服務器端進行處理。如何在網址中發送批量數據?

是否可以使用get方法發送?

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

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

應該如何傳遞這些列表?

項目將增長dynamically.sometime的這些名單,我們將獲得每個列表中的10個項目

建議我的方法是什麼?

回答

4

通常,最好避免GET請求中的長查詢字符串。有關此問題的一個很好的問題是SO問題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) 
+0

發送它們的適當方式是?l1 = string1&l1 = string2&l2 = string3等。這是URL格式化的標準。 – Jordan 2012-03-27 15:57:18

+0

對,我忘了你可以複製查詢參數。我已經更新了答案。 – jterrace 2012-03-27 16:08:24

0

你可以用相同的URL變量名稱發送所有

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

request.GET.getlist( 「urlvar」);