将数据从文本框发送到 Flask?

我想知道是否有一种方法可以从 HTML 中的文本框中提取一些内容,将其输入到 flask 中,然后用 Python 解析这些数据。我在想这可能会涉及一些 JS 但我可能是错的。有什么想法吗?

194032 次浏览

假设您已经知道如何在 Flask中使用 写一个视图来响应 URL,那么创建一个读取 request.post数据的 URL。要将 input box添加到此文章数据,请在页面上创建一个带有文本框的表单。然后您可以使用 jquery来完成

var data = $('#<form-id>').serialize()

然后使用下面的内容异步发布到视图中。

$.post('<your view url>', function(data) {
$('.result').html(data);
});

服务器(您的烧瓶应用程序)和客户端(浏览器)之间的所有交互按请求和响应进行。当用户点击按钮提交你的表单时,他的浏览器会将这个表单的请求发送到你的服务器(烧瓶应用程序) ,你可以得到表单的内容如下:

request.args.get('form_name')

声明一个 Flask 端点以接受 POST 输入类型,然后执行必要的步骤。

from flask import request


@app.route('/parse_data', methods=['GET', 'POST'])
def parse_data(data):
if request.method == "POST":
#perform action here
var value = $('.textbox').val();
$.ajax({
type: 'POST',
url: "\{\{ url_for('parse_data') }}",
data: JSON.stringify(value),
contentType: 'application/json',
success: function(data){
// do something with the received data
}
});

除非您想做一些更复杂的事情,否则将来自 HTML 表单的数据提供给 Flask 是非常容易的。

  • 创建一个接受 POST 请求的视图(my_form_post)。
  • 访问字典 request.form中的表单元素。

返回文章页面

<form method="POST">
<input name="text">
<input type="submit">
</form>
from flask import Flask, request, render_template


app = Flask(__name__)


@app.route('/')
def my_form():
return render_template('my-form.html')


@app.route('/', methods=['POST'])
def my_form_post():
text = request.form['text']
processed_text = text.upper()
return processed_text

This is the Flask documentation about 访问请求数据.

如果你需要更复杂的表格,需要验证,然后你可以看看 WTForms如何把它们和烧瓶结合起来

注意: 除非您有任何其他限制,否则您并不真正需要 JavaScriptat all来发送数据(尽管您可以使用它)。

这招对我很管用。

def parse_data():
if request.method == "POST":
data = request.get_json()
print(data['answers'])
return render_template('output.html', data=data)
$.ajax({
type: 'POST',
url: "/parse_data",
data: JSON.stringify({values}),
contentType: "application/json;charset=utf-8",
dataType: "json",
success: function(data){
// do something with the received data
}
});