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))