Python 如何处理名称中包含索引的Flask中的输入?

Python 如何处理名称中包含索引的Flask中的输入?,python,python-2.7,flask,Python,Python 2.7,Flask,如何处理如下形式的输入: <input type="text" name="time[1]" value="a"> <input type="text" name="time[2]" value="h"> <input type="text" name="time[3]" value="j"> 因此,我必须获取值并在时间[]内建立索引 例如,当我只发送一个字段时: <input type="text" name="time[3]" value="3"&

如何处理如下形式的输入:

<input type="text" name="time[1]" value="a">
<input type="text" name="time[2]" value="h">
<input type="text" name="time[3]" value="j">
因此,我必须获取
并在
时间[]内建立索引

例如,当我只发送一个字段时:

<input type="text" name="time[3]" value="3">

我应该得到
value=j
index=3

如何做到这一点?

到Flask(或任何后端),这些参数作为单独的表单参数发送,这些表单参数称为
时间[1]
时间[2]
时间[3]
,而不是作为某种神奇的列表。如果你想把它们变成一个
列表
,或者更确切地说是一个
目录
,因为它是一个稀疏的列表,那么你必须遍历你的
请求。表单
并提取它们。比如:

form = request.form  # a short-hand for readability 
time = {p[5:-1]: form[p] for p in form if p[:4] == "time" and p[4] == "[" and p[-1] == "]"}
然后,您可以使用新创建的
时间
字典,以
索引:值
的方式循环遍历每个参数:

for i, v in time.items():
    print("index={}, value={}".format(i, v))
或者您可以直接访问索引以获取值,即
time['3']
。请注意,我们在这里使用字符串作为索引,如果发送的“索引”始终是整数,则可以在设置键时使用
int(p[5:-1])
,然后使用
time[3]
访问值


如果要使用
request.form.getlist()
,则需要将所有输入命名为相同的名称(例如
time[]
),但这样就不会有稀疏列表。

是否可以使用其他方法?例如,以其他方式发送数据?@Jessie-正如我最后所说,如果您将所有输入命名为
time[]
,那么您将能够使用
request.form.getlist(“time[])检索列表
但这意味着您将无法检测哪些输入未发送-您将得到一个
0..n
索引列表,其中包含所有
输入
字段的单个值,这些字段名为
time[]
,发送到您的Flask应用程序。因此,您无法获取每个字段的索引input@Jessie-您可以使用上面的代码,如果您使用
time[]
作为每个输入的名称,则无法使用。您可以推荐hot以使其更简单吗?我的意思是如何更改HTML代码以方便处理数据?也许在输入附近设置复选框?
for i, v in time.items():
    print("index={}, value={}".format(i, v))