Je me demandais s'il y avait un moyen de prendre quelque chose d'une zone de texte dans le HTML, de le nourrir dans flask, puis d'analyser ces données avec Python. Je pensais que cela pourrait impliquer certains JS, mais je peux me tromper. Des idées?
92
Réponses:
À moins que vous ne souhaitiez faire quelque chose de plus compliqué, il est assez facile d'alimenter les données d'un formulaire HTML dans Flask.
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
Il s'agit de la documentation Flask sur l' accès aux données de demande .
Si vous avez besoin de formulaires plus complexes nécessitant une validation, vous pouvez jeter un œil à WTForms et comment les intégrer à Flask .
Note: à moins que vous avez d'autres restrictions, vous n'avez pas vraiment besoin JavaScript du tout pour envoyer vos données (même si vous pouvez l' utiliser).
la source
app.debug = True
juste avantapp.run()
pour obtenir l'exception et la trace de l'erreur.<input type="text" name="text">
par<textarea name="text"></textarea>
et tout devrait bien se passer .Déclarez un point de terminaison Flask pour accepter le type d'entrée 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 } });
la source
Toutes les interactions entre le serveur (votre application flask) et le client (navigateur) se font par requête et réponse. Lorsque l'utilisateur a appuyé sur le bouton soumettre 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')
la source
En supposant que vous savez déjà comment écrire une vue en
Flask
répondant à une URL, créer un qui lit lesrequest.post
données. Pour ajouter lesinput box
données à ce message, créez un formulaire sur votre page avec la zone de texte. Vous pouvez ensuite utiliserjquery
pour fairevar data = $('#<form-id>').serialize()
puis postez sur votre vue de manière asynchrone en utilisant quelque chose comme ci-dessous.
$.post('<your view url>', function(data) { $('.result').html(data); });
la source
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 } });
la source