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_text
Esta 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 = True
justo 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 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 } });
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
Flask
que responde a una URL, crear uno que lee larequest.post
información. Para agregar losinput box
datos a esta publicación, cree un formulario en su página con el cuadro de texto. Entonces puedes usarjquery
para 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