flask 如何使用flask request获取一个表单中具有相同name属性的输入值

代码如下:

view.py

……
@approval.route('/submit', methods=['GET', 'POST'])
@login_required
def _submit():

form = LEForm()
if current_user.can(Permission.WRITE) and request.form.get('submit', None) == "提交":
    post = Post(
        w=form.w.data ########################想修改这句实现
    )
    db.session.add(lepost)
    db.session.commit()

……

html

……
<td><input type="text" id="w_location" name="w_location" value="第一个值" placeholder="" ></td>
<td><input type="text" id="w_location" name="w_location" value="第二个值" placeholder="" ></td>
<td><input type="text" id="w_location" name="w_location" value="第三个值" placeholder="" ></td>
……

这样做只能接收到第一个值,数据库中只创建了一条数据,如何才能自动接收三个值并在数据库创建三条数据呢?万分感谢。

阅读 4.1k
3 个回答

你的 id 和 name 为啥每条都是一样的。。。。

建议你把 id 和 name 都给与不同的值。

新手上路,请多包涵

3年了啊,专门回答下吧
构建name相同的表单,是经常刚需,FLASK当然不会出现这样低级的功能缺失。
request.form返回的是ImmutableMultiDict类型。
很幸运ImmutableMultiDict对象具有一个lists方法。它将其转换为具有统一键的字典,该统一键包含值列表。

from werkzeug import ImmutableMultiDict
#d = request.form
d = ImmutableMultiDict([('name', 'boom'), ('extension', 'pdf'), ('extension', 'doc')])
dict(d.lists())

# returns:
{'name': ['boom'], 'extension': ['pdf', 'doc']}

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题