1

我正在使用 Jinja2 生成具有可变数量输入的表单,标记为 input_1、input_2 等。使用 Google App Engine (python),然后我尝试在我的请求处理程序中使用self.request.args.get().

但是,根据表单生成的输入数量,脚本需要读取多个变量。脚本知道会有多少,所以问题是如何在 for 循环中使用某种变量来有效地读取它们。

我所追求的那种东西在概念上是这样的:

for x in total_inputs:
  list.append(input_x)

我当然可以只对不同数量的输入使用 if 语句并手动命名变量,但这看起来非常笨拙 - 肯定有更好的方法吗?

非常感谢

4

2 回答 2

4

您可以使用字符串格式来执行此操作,如下所示:

num = 5
tag = 'input_%d' % num

因此,要组装所有input_x标签的值列表,您可以执行以下操作:

input_values = []
for i in range(1, number_of_values + 1):
  input_values.append(self.request.get('input_%d' % i))

这假设您知道要检索多少个值。您的问题假定您这样做,但如果您没有这样做,您可以遍历结果,直到得到一个空字符串(request.get不存在标签的默认返回值)。

编辑:以上评论假设您使用的是 webapp。KeyError如果您尝试调用get不存在且未指定默认值的参数,其他框架可能会抛出 a 。

于 2011-07-07T05:38:35.193 回答
0
for x in total_inputs: list.append (locals () ['input_%d' % x] )

或者,如果您想要一个以变量名作为键,将其值作为值的字典:

vars = {}    
for x in total_inputs: vars ['input_%d' % x] = locals () ['input_%d' % x]

这是python2.6中的一些工作示例:

>>> input_0 = 'a'
>>> input_1 = 4
>>> input_2 = None
>>> for x in range (3): print locals () ['input_%d' % x]
...
a
4
None
>>>
于 2011-07-07T04:46:56.457 回答