Je me demandais s'il y avait un moyen de prendre quelque chose d'une zone de texte dans le code HTML, de le nourrir dans un flacon, puis d'analyser ces données avec Python. Je pensais que cela pourrait impliquer un certain JS mais je peux me tromper. Des idées?
Sauf si vous voulez faire quelque chose de plus compliqué, introduire les données d'un formulaire HTML dans Flask est assez facile.
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
Ceci est la Flask documentation sur accès aux données de la demande .
Si vous avez besoin de formulaires plus complexes qui nécessitent une validation, vous pouvez jeter un oeil à WTForms et comment les intégrer à Flask .
Remarque: à moins que vous n'ayez d'autres restrictions, vous n'avez vraiment pas besoin de JavaScript pour envoyer vos données (bien que vous puissiez les utiliser).
Déclarez un point final Flask à accepter] POST puis effectuez les étapes nécessaires. Utilisez jQuery pour publier les données.
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
}
});
Toutes les interactions entre le serveur (votre flask) et le client (navigateur) passent par demande et réponse. Lorsque l'utilisateur clique sur le bouton, il envoie dans votre formulaire son navigateur envoie une demande avec ce formulaire à votre serveur (application flask ), et vous pouvez obtenir le contenu du formulaire comme:
request.args.get('form_name')
En supposant que vous sachiez déjà comment écrire une vue dans Flask
qui répond à une URL, créez-en une qui lit les données request.post
. Pour ajouter le input box
À ces données de publication, créez un formulaire sur votre page avec la zone de texte. Vous pouvez ensuite utiliser jquery
pour faire
var data = $('#<form-id>').serialize()
puis postez votre vue de manière asynchrone en utilisant quelque chose comme ci-dessous.
$.post('<your view url>', function(data) {
$('.result').html(data);
});
Cela a fonctionné pour moi.
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
}
});