Me preguntaba si había una manera de tomar algo de un cuadro de texto en el HTML, introducirlo en el matraz y luego analizar esos datos con Python. Estaba pensando que esto podría involucrar algo de JS, pero podría estar equivocado. ¿Algunas ideas?
                92
            
  
            
Respuestas:
A menos que desee hacer algo más complicado, introducir datos desde un formulario HTML en Flask es bastante fácil.
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_textEsta es la documentación de Flask sobre cómo acceder a los datos de la solicitud .
Si necesita formularios más complicados que necesitan validación, puede echar un vistazo a WTForms y cómo integrarlos con Flask .
Nota: a menos que tenga cualquier otra restricción, que realmente no necesita JavaScript en absoluto para enviar sus datos (aunque se puede usar).
fuente
app.debug = Truejusto antesapp.run()para que obtenga la excepción y el seguimiento del error.<input type="text" name="text">por<textarea name="text"></textarea>y debería estar bien.Declare un extremo de Flask para aceptar el tipo de entrada POST y luego realice los pasos necesarios. Utilice jQuery para publicar los datos.
from flask import request @app.route('/parse_data', methods=['GET', 'POST']) def parse_data(data): if request.method == "POST": #perform action herevar 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 } });fuente
Toda la interacción entre el servidor (su aplicación de matraz) y el cliente (navegador) se realiza por solicitud y respuesta. Cuando el usuario presiona el botón enviar en su formulario, su navegador envía una solicitud con este formulario a su servidor (aplicación de matraz), y puede obtener el contenido del formulario como:
request.args.get('form_name')fuente
Asumiendo que ya sabe cómo escribir una vista en
Flaskque responde a una URL, crear uno que lee larequest.postinformación. Para agregar losinput boxdatos a esta publicación, cree un formulario en su página con el cuadro de texto. Entonces puedes usarjquerypara hacervar data = $('#<form-id>').serialize()y luego publique en su vista de forma asincrónica usando algo como lo siguiente.
$.post('<your view url>', function(data) { $('.result').html(data); });fuente
Esto funcionó para mí.
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 } });fuente