python3 验证 CGI.FieldStorage 中的元素

python3 validate elements in CGI.FieldStorage

CGI 脚本获取一些 GET 数据,例如

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。如果 Key1 和 Key2 在 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 

如何根据关联的 validate_lists 评估来自 MiniFieldStorage 的 GET 值?

您可以使用 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