2016-11-28 26 views
0

CGI腳本得到了一些GET數據,如python3驗證元素CGI.FieldStorage

test.cgi?key1=val1&key2=val2 

所得的FieldStorage對象看起來像

FieldStorage(None, None, [MiniFieldStorage('key1', 'val1'), MiniFieldStorage('key2', 'val2')], MiniFieldStorage('key3', 'val3')]) 

我有一個正在尋找這樣的驗證列表:

validate_list1 = ('a', 'b', 'c', 'd') 
validate_list2 = ('w', 'x', 'y', 'z') 
validate_list3 = ('m', 'n', 'o', 'p') 

GET參數可以是以上到3個鍵值對。

如果只返回一個鍵值對,我只需要檢查validate_list1。如果鍵1和鍵2是在CGI從我想查這樣

val1 in validate_list1 AND val2 in validate_list2 

和3個CGI參數

val1 in validate_list1 AND val2 in validate_list2 AND val3 in validate_list3 

我如何評估從MiniFieldStorage對相關validate_lists的GET值?

回答

1

您可以測試的參數是與in關鍵字GET請求:

keys = ('key1', 'key2', 'key3') 
validate_lists = (('a', 'b', 'c', 'd'), ('w', 'x', 'y', 'z'), ('m', 'n', 'o', 'p')) 

valid = True 
for key, valid in keys, validate_lists: 
    if key in cgi.FieldStorage(): 
     if not cgi.FieldStorage()[key].value in valid: 
      valid = False 
+0

偉大幫我寫的解決方案。我首先從FieldStorage獲得密鑰,然後根據密鑰加載validation_list,然後我可以遍歷Fieldtroage。 –