我有一个动态添加了具有相同名称的行的表单。我尝试使用getlist,但我只得到第一个值。
这是我的HTML表单代码:
<html>
<div>
<form method=POST>
</div>
<table id="linkTable">
<tbody><tr class="tr_clone" id="addrow">
<td>First: </td>
<td><input class="from-field" id="from" type="text" name="first"></td>
<td>Last: </td>
<td><input class="to-field" id="to" type="text" name="last"></td>
<td>Email: </td>
<td><input class="port-field" id="ports" type="text" name="email"></td>
</tr>
</tbody></table>
<script>
$("#addbtn").click(function(){
$("#addrow").clone().find("input:text").val("").end().prependTo("#linkTable");
})
</script>
</form>
</html>
这是我的python代码:
from flask import Flask, request, render_template
for arg in request.form:
print arg, request.form.getlist(arg)
任何人都可以解释一下即使我使用getlist,我也只得到第一个值吗?
提前致谢
答案 0 :(得分:1)
每次要在html中解析相同的zip()
属性时,使用name
会很方便。看看这个:
@app.route('/creation', methods=['GET', 'POST'])
def create():
try:
if request.method == 'POST':
for first, last, email in zip(request.form.getlist('first'),
request.form.getlist('last'),
request.form.getlist('email')):
print(first, last, email)
else:
return render_template('create.html')
except Exception as e:
print(str(e))
答案 1 :(得分:0)
在寻找了很长时间后,能够通过网络查看我自己的问题。
我有以下内容:
<html>
<!-- note how the form has been moved out of the div so that the navigator does not close the div -->
<form method=POST>
<table id="linkTable">
<tbody><tr class="tr_clone" id="addrow">
<td>First: </td>
<td><input class="from-field" id="from" type="text" name="first"></td>
<td>Last: </td>
<td><input class="to-field" id="to" type="text" name="last"></td>
<td>Email: </td>
<td><input class="port-field" id="ports" type="text" name="email"></td>
</tr>
</tbody></table>
<script>
$("#addbtn").click(function(){
$("#addrow").clone().find("input:text").val("").end().prependTo("#linkTable");
})
</script>
</form>
</html>
事实证明,关闭div会关闭一个表单标记,以便在表单外部动态添加行。通过在div之外移动form指令,我在表单提交时开始获取多个值
找到了更详细的答案