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?
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?
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).
app.debug = True
justo antes app.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
}
});
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')
Asumiendo que ya sabe cómo escribir una vista en Flask
que responde a una URL, crear uno que lee la request.post
información. Para agregar los input box
datos a esta publicación, cree un formulario en su página con el cuadro de texto. Entonces puedes usar jquery
para hacer
var 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);
});
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
}
});