Python 处理具有多个选择选项的表单

Python 处理具有多个选择选项的表单,python,cgi,Python,Cgi,我有一个cgi脚本,其中包含一个选择框,最终用户可以在其中提交多个选项或仅提交一个选项。此选择标记名为“参数”。请看这里的示例 当提交此表单时,选择了多个选项,URL如下所示 http…….mycgiscript.py?参数=option1value¶meters=option2values 或者,如果用户只选择了一个选项,它看起来像这样 http…….mycgiscript.py?参数=option3value 我的表格声明为 import cgi form = cgi.FieldS

我有一个cgi脚本,其中包含一个选择框,最终用户可以在其中提交多个选项或仅提交一个选项。此选择标记名为“参数”。请看这里的示例

当提交此表单时,选择了多个选项,URL如下所示

http…….mycgiscript.py?参数=option1value¶meters=option2values

或者,如果用户只选择了一个选项,它看起来像这样

http…….mycgiscript.py?参数=option3value

我的表格声明为

import cgi
form = cgi.FieldStorage()
因此,当用户选择多个选项并提交表单时,表单['parameters']的数据类型是一个列表,然而,当用户仅选择一个选项并提交时,表单['parameters']的数据类型是一个实例

多个选项(作为列表返回):

[MiniFieldStorage('parameters', 'option1value'), MiniFieldStorage('parameters', 'option2value')] 
MiniFieldStorage('parameters', 'option3value') 
单个选项(作为实例返回):

[MiniFieldStorage('parameters', 'option1value'), MiniFieldStorage('parameters', 'option2value')] 
MiniFieldStorage('parameters', 'option3value') 
我的问题是

因为表单['parameters']可以是列表或实例,这取决于用户提交的内容;处理这两种数据类型的最佳方法是什么?我想要的输出是一个列表变量,其中包含表单上选择的选项XValues。到目前为止,我能做的最好的就是

if type(form['parameters']) == type([]):
    l = [ x.value for x in form['parameters'] ]
else:
    l = [form['parameters'].value]
我这样做是因为简单地使用form['parameters'].value在用户选择多个选项时会产生以下异常

AttributeError: 'list' object has no attribute 'value'

那么,有没有比我上面基于if/else语句的建议更好的方法呢?我希望你们中的一些python大师能够提出一种更好的方法来做到这一点。

你们可以做的是使用:

form.getlist('参数')

这将提供具有相同名称的所有不同输入类型的值,即参数

这是我在20.2.2中收集到的信息,其中他们建议,当您预期可能有多个项目具有相同的名称字段时,情况就是这样


希望这对你有所帮助,尽管我想你自己已经找到了。你能做的是使用:

form.getlist('参数')

这将提供具有相同名称的所有不同输入类型的值,即参数

这是我在20.2.2中收集到的信息,其中他们建议,当您预期可能有多个项目具有相同的名称字段时,情况就是这样

希望这有帮助,尽管我想你自己已经找到了