如何在python cgi中迭代表单值?新手

如何在python cgi中迭代表单值?新手,python,cgi,Python,Cgi,假设我有一个有多个字段的表单。在我的cgi中,我使用了所有的值 res1 = form.getvalue("opt_1") res2 = form.getvalue("opt_2") res3 = form.getvalue("opt_3") res4 = form.getvalue("opt_4") res5 = form.getvalue("opt_5") ... ... res100 = form.getvalue("opt_100") 在我的cgi中,我使

假设我有一个有多个字段的表单。在我的cgi中,我使用了所有的值

res1 = form.getvalue("opt_1")
res2 = form.getvalue("opt_2")
res3 = form.getvalue("opt_3") 
res4 = form.getvalue("opt_4")
res5 = form.getvalue("opt_5")
       ...
       ...
res100 = form.getvalue("opt_100")
在我的cgi中,我使用for循环来获取值

for i in range(1, 100):
    res[i] = form.getvalue('opt_[i]')
    print res[i]

我收到一个错误:NameError:未定义全局名称“res”

看起来您尚未定义
res
,请先定义它:

res = []
for i in range(1, 100):
    res.append(form.getvalue('opt_%d'%i))
    print res[i-1]

其中res是一个列表,包含
form.getvalue('opt_i')
s的结果。

看起来您还没有定义
res
,请先定义它:

res = []
for i in range(1, 100):
    res.append(form.getvalue('opt_%d'%i))
    print res[i-1]

其中res是一个列表,包含
form.getvalue('opt_i')
s的结果。

看起来您还没有定义
res
,请先定义它:

res = []
for i in range(1, 100):
    res.append(form.getvalue('opt_%d'%i))
    print res[i-1]

其中res是一个列表,包含
form.getvalue('opt_i')
s的结果。

看起来您还没有定义
res
,请先定义它:

res = []
for i in range(1, 100):
    res.append(form.getvalue('opt_%d'%i))
    print res[i-1]

其中res将是一个包含
form.getvalue('opt_i')
s结果的列表。

循环存在两个问题:首先,
res
还不存在,因此尝试分配给它的项将不起作用。第二,如果您首先将其创建为空列表,则无法通过写过末尾来扩展它

改为使用列表同时修复这两个问题:

res = [form.getfirst('opt_{}'.format(i)) for i in range(1, 100)]
这会将
opt_1
的值置于
res[0]
,依此类推-如果这是一个问题,您可以在其开头添加一个虚拟元素:

res = [None] + [form.getfirst('opt_{}'.format(i)) for i in range(1, 100)]
或者改用字典:

res = {i: form.getfirst('opt_{}'.format(i)) for i in range(1, 100)}

请注意,根据,应该避免使用
getvalue
,因为它可能会根据用户输入返回字符串或列表。使用
form.getfirst
来保证您将拥有一个字符串。

您的循环有两个问题:第一,
res
还不存在,因此尝试分配给它的项将不起作用。第二,如果您首先将其创建为空列表,则无法通过写过末尾来扩展它

改为使用列表同时修复这两个问题:

res = [form.getfirst('opt_{}'.format(i)) for i in range(1, 100)]
这会将
opt_1
的值置于
res[0]
,依此类推-如果这是一个问题,您可以在其开头添加一个虚拟元素:

res = [None] + [form.getfirst('opt_{}'.format(i)) for i in range(1, 100)]
或者改用字典:

res = {i: form.getfirst('opt_{}'.format(i)) for i in range(1, 100)}

请注意,根据,应该避免使用
getvalue
,因为它可能会根据用户输入返回字符串或列表。使用
form.getfirst
来保证您将拥有一个字符串。

您的循环有两个问题:第一,
res
还不存在,因此尝试分配给它的项将不起作用。第二,如果您首先将其创建为空列表,则无法通过写过末尾来扩展它

改为使用列表同时修复这两个问题:

res = [form.getfirst('opt_{}'.format(i)) for i in range(1, 100)]
这会将
opt_1
的值置于
res[0]
,依此类推-如果这是一个问题,您可以在其开头添加一个虚拟元素:

res = [None] + [form.getfirst('opt_{}'.format(i)) for i in range(1, 100)]
或者改用字典:

res = {i: form.getfirst('opt_{}'.format(i)) for i in range(1, 100)}

请注意,根据,应该避免使用
getvalue
,因为它可能会根据用户输入返回字符串或列表。使用
form.getfirst
来保证您将拥有一个字符串。

您的循环有两个问题:第一,
res
还不存在,因此尝试分配给它的项将不起作用。第二,如果您首先将其创建为空列表,则无法通过写过末尾来扩展它

改为使用列表同时修复这两个问题:

res = [form.getfirst('opt_{}'.format(i)) for i in range(1, 100)]
这会将
opt_1
的值置于
res[0]
,依此类推-如果这是一个问题,您可以在其开头添加一个虚拟元素:

res = [None] + [form.getfirst('opt_{}'.format(i)) for i in range(1, 100)]
或者改用字典:

res = {i: form.getfirst('opt_{}'.format(i)) for i in range(1, 100)}

请注意,根据,应该避免使用
getvalue
,因为它可能会根据用户输入返回字符串或列表。使用
form.getfirst
来保证您将拥有一个字符串。

res[i]=form.getvalue()
在res没有索引
i
时不起作用。您需要执行
res.append
来增加列表,然后每个项目实际上将位于
res[i-1]
@lvc抱歉,我错过了。非常感谢<当res还没有索引时,code>res[i]=form.getvalue()将不起作用。您需要执行
res.append
来增加列表,然后每个项目实际上将位于
res[i-1]
@lvc抱歉,我错过了。非常感谢<当res还没有索引时,code>res[i]=form.getvalue()将不起作用。您需要执行
res.append
来增加列表,然后每个项目实际上将位于
res[i-1]
@lvc抱歉,我错过了。非常感谢<当res还没有索引时,code>res[i]=form.getvalue()将不起作用。您需要执行
res.append
来增加列表,然后每个项目实际上将位于
res[i-1]
@lvc抱歉,我错过了。谢谢!