Python 将文本框中的数据发送到烧瓶中?

Python 将文本框中的数据发送到烧瓶中?,python,flask,Python,Flask,我想知道是否有一种方法可以从HTML中的文本框中提取一些内容,将其输入到flask中,然后用Python解析这些数据。我想这可能涉及一些JS,但我可能错了。有什么想法吗?假设您已经知道如何在响应url的烧瓶中创建一个读取请求的烧瓶。发布数据。要将输入框添加到此帖子数据,请在页面上使用文本框创建表单。然后可以使用jquery执行以下操作 var data=$('#').serialize() 然后使用下面的方法异步发布到视图 $.post('<your view url>', func

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

假设您已经知道如何在响应url的
烧瓶中创建一个读取
请求的烧瓶。发布
数据。要将
输入框添加到此帖子数据,请在页面上使用文本框创建表单。然后可以使用
jquery
执行以下操作

var data=$('#').serialize()

然后使用下面的方法异步发布到视图

$.post('<your view url>', function(data) {
  $('.result').html(data);
});
$.post(“”,函数(数据){
$('.result').html(数据);
});

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

request.args.get('form_name')

声明一个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({
键入:“POST”,
url:“{url\u for('parse\u data')}}”,
数据:JSON.stringify(值),
contentType:'应用程序/json',
成功:功能(数据){
//对接收到的数据进行处理
}
});

除非您想做更复杂的事情,否则将HTML表单中的数据馈送到Flask中相当容易

  • 创建一个接受POST请求的视图(
    my\u form\u POST
  • 访问字典
    request.form中的表单元素
模板/my form.html

这是关于烧瓶的文档

如果您需要更复杂的表单,需要验证,那么您可以查看和

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

这对我很有效

def parse_data():
    if request.method == "POST":
        data = request.get_json()
        print(data['answers'])
        return render_template('output.html', data=data)

为什么不使用HTML表单并直接发布呢?或者您需要异步执行此操作吗?在这种情况下,您将需要对AJAX进行一些阅读。:-)我知道我可以使用HTML表单,但我如何将这些信息传递到flask应用程序?嘿,这曾经有效,但现在抛出一个错误500,有什么想法吗?它应该可以正常工作。。。将
app.debug=True
放在
app.run()
之前,这样就可以得到异常和错误的回溯。是的,我忘记了,我是个白痴,忘了把HTML放在我的模板文件夹里。我浪费了一点时间试图用一个更大的文本区域而不是文本框来做这件事。如果有人需要用烧瓶来做这件事,解决方案是@cardamom,我真的不明白你的意思。使用textarea或text类型的输入不会以任何方式改变解决方案(您链接的解决方案与此完全相同)。你不必改变Python的一面,只要用
替换
,你就会没事了。
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
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
      }
    });