2013-06-04 50 views
1

這是使用mod-WSGILinux網絡服務器上的Python中的第一步。在Python中獲取所有請求參數

我試圖讓所有的cell參數從URL中像這樣的列表:

...&cell=&cell=1&cell=2&cell=3&cell=4&cell=5&cell=6&cell=7&cell=8&... 

於是我開始用這樣的代碼:

def application(environment, start_response): 
    import cgi 
    form = cgi.FieldStorage(fp = environment['wsgi.input'], environ = environment) 
    temp_table_inputs=form.getlist('cell') 

但是我發現,第一個cell參數從列表中丟失(我推測,因爲getlist刪除它,因爲內容是空白的)。

兩個問題:

  • 如何,我可以得到包括空白值的列表?
  • 如何找到列表中的哪些位置被getlist跳過?

:我知道cell東西有一個位置的依存關係,但我寧願尋找一種方式,根據他們的位置命名參數之前來處理那些(我繼承了代碼,並頗有幾分依賴在位置的東西,所以重命名的東西將需要很多努力)。

回答

3

按照documentation

該實例的FieldStorage可以像Python字典進行索引。它允許使用in運算符進行成員資格測試,並且還支持標準字典方法keys()和內置函數len()。包含空字符串的表單字段將被忽略,不會出現在字典中;要保留這些值,請在創建FieldStorage實例時爲可選的keep_blank_values關鍵字參數提供真實值。

它解決了您的問題嗎?

+1

我對Python完全陌生,所以我試着去感受一下使用的習慣用法以及在哪裏設置哪些參數。所以感謝您指點我'keep_blank_values'。會嘗試讓你知道。 –

+1

別擔心:)我想你所要做的就是改變這一行:'form = cgi.FieldStorage(fp = environment ['wsgi.input'],environ = environment)'to'form = cgi.FieldStorage (fp = environment ['wsgi.input'],environ = environment,keep_blank_values = True)' – Markon

+1

是的,他們得出了同樣的結論。謝謝! –