109

我想知道是否有一种方法可以从 HTML 中的文本框中获取某些内容,将其输入到烧瓶中,然后使用 Python 解析该数据。我在想这可能涉及一些 JS,但我可能是错的。有任何想法吗?

4

5 回答 5

190

除非您想做更复杂的事情,否则将 HTML 表单中的数据输入 Flask 非常容易。

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

templates/my-form.html

<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

这是关于访问请求数据的 Flask 文档。

如果您需要需要验证的更复杂的表单,那么您可以查看WTForms以及如何将它们与 Flask 集成

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

于 2012-09-05T09:47:09.767 回答
13

声明一个 Flask 端点以接受 POST 输入类型,然后执行必要的步骤。使用 jQuery 发布数据。

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
  }
});
于 2012-09-05T09:35:41.607 回答
2

服务器(您的烧瓶应用程序)和客户端(浏览器)之间的所有交互都通过请求和响应进行。当用户在您的表单中点击按钮提交时,他的浏览器会使用此表单向您的服务器(flask 应用程序)发送请求,您可以获得如下表单的内容:

request.args.get('form_name')
于 2012-09-05T09:29:01.647 回答
1

假设您已经知道如何编写一个Flask响应 url 的视图,请创建一个读取数据request.post的视图。要添加input box到此帖子数据,请在您的页面上使用文本框创建一个表单。然后你可以用jquery

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

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

$.post('<your view url>', function(data) {
  $('.result').html(data);
});
于 2012-09-05T09:26:07.337 回答
0

这对我有用。

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
      }
    });
于 2019-08-17T12:34:22.490 回答