从 HTML 表单发布值并在 Flask 视图中访问它们

Posted

技术标签:

【中文标题】从 HTML 表单发布值并在 Flask 视图中访问它们【英文标题】:Post values from an HTML form and access them in a Flask view 【发布时间】:2014-10-29 17:24:10 【问题描述】:

我有一个发布到 Flask 路由的 html 表单。但是,request.form 是空的。如果我尝试通过 id 访问其中一个值,则会收到 400 错误。如何从 HTML 表单中发布值并在 Flask 中访问它们?

<form method="POST">
  <input id="my_input" type="text" value=" email ">
  <input id="my_submit" type="submit" value="Submit">
</form>
@app.route('/page', methods=['POST', 'GET'])
def get_page():
    if request.method == 'POST':
        print(request.form)  # prints ImmutableMultiDict([])
        print(request.form['my_input'])  # raises 400 error
    return render_template('page.html')

【问题讨论】:

【参考方案1】:

您的input 没有name 属性。这就是客户端将传递给服务器的内容。如果您访问未提交的表单键,Flask 将引发 400 错误。

<input name="my_input" id="my_input" type="text" value=" email ">

【讨论】:

【参考方案2】:

你需要在Html页面中指定form Action方法,然后在Tag里面提到HTML Text框名。

<form method="POST" action="/PythonFunctionName">
  <input id="my_input" type="text" name="HTMLControlName" value=" email ">
  <input id="my_submit" type="submit" value="Submit">
</form>

在 .py 模块中使用 HTML 标签中指定的名称访问元素。

@app.route('/PythonFunctionName', methods=['POST', 'GET'])
def getPage():
    if request.method == 'POST':
        strTextBoxVal= request.form['HTMLControlName'])
        Print(strTextBoxVal) 
    return render_template('page.html')

【讨论】:

以上是关于从 HTML 表单发布值并在 Flask 视图中访问它们的主要内容,如果未能解决你的问题,请参考以下文章

从数据库中获取值并在 Laravel 中单击按钮时以表单形式显示它

ORACLE - 计算两个值并在视图中显示结果

如何从数组中获取值并在zend框架工作中分配给视图

获取不同视图中存在的选择器视图的选定值并在其他视图中使用字符串

如何从views.py 中获取值并在html 模板中使用它?

如何从 Access 数据库中获取值并在 C# winforms Devexpress 的 Gridview 中设置?