如何在 Flask 中获取已提交表单的名称?

Posted

技术标签:

【中文标题】如何在 Flask 中获取已提交表单的名称?【英文标题】:How to get the name of a submitted form in Flask? 【发布时间】:2014-11-30 19:18:01 【问题描述】:

我正在使用 Flask 构建一个网站,在一个页面上我有两个表单。如果有 POST,我需要决定要发布哪个表单。我当然可以从request.form 中存在的字段中扣除它,但我宁愿通过获取提交的表单的名称(由<form name="my_form"> 定义)来明确它。我尝试了几件事,例如:

@app.route('/myforms', methods=['GET', 'POST'])
def myForms():
    if request.method == 'POST':
        print request.form.name
        print request.form.['name']

但不幸的是,没有任何效果。有人知道我在哪里可以得到提交的表格的名称吗?欢迎所有提示!

【问题讨论】:

【参考方案1】:

没有“表格名称”。该信息不是由浏览器发送的; <form> 标签上的 name 属性仅用于浏览器端(不推荐用于启动,请改用 id)。

您可以通过使用隐藏字段添加该信息,但区分发布到同一表单处理程序的表单的最常见方法是为提交按钮命名:

<submit name="form1" value="Submit!"/>

if 'form1' in request.form:

但您也可以使用&lt;input type="hidden"&gt; 字段来包含区分表单的方法。

【讨论】:

谢谢!这确实解决了我的问题!我从来不知道那不是由浏览器发送的。最后一个问题:“不推荐启动”是什么意思? @kramer65:name 属性在 html 4 中已被弃用。因此,它不仅对您的用例没有用处,甚至不再是您应该使用的属性。跨度> 啊,太棒了。九十年代学html,之后多年主要在后端系统工作。所以我的 html 技能有点过时了.. ;) 谢谢一百万! 是的,但是当您在 Flask 中有 2 个提交按钮时,如何区分两个提交按钮,如下所示:form.submit(class="btn btn-outline-info")。在哪里可以指定 name 属性? @Nikos:是的,完全正确。 WTForms 总是将绑定的字段名作为name 属性添加到输入字段中,提交也不例外。

以上是关于如何在 Flask 中获取已提交表单的名称?的主要内容,如果未能解决你的问题,请参考以下文章

在 React 中提交表单时如何获取要显示的名称和 uuid

用python flask制作的网页上传到服务器后python如何获取网上用户提交的form表单信息?

Jquery和Flask:如何理解表单提交功能中的'return false' [重复]

java程序如何获取POST方式提交的数据?

Servlet中啥方法获取客户端提交的数据

flask 表单提交问题,如何实现点击执行执行按钮,执行下拉框选择的部分