Envoyer des données d'une zone de texte dans Flask?

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 des JS mais je pourrais me tromper. Des idées?

61
demandé sur ollien 2012-09-05 13:05:38

4 réponses

Sauf si vous voulez faire quelque chose de plus compliqué, l'alimentation des données d'un formulaire HTML dans Flask est assez facile.

  • créez une vue qui accepte une requête POST (my_form_post).
  • Accéder aux éléments de formulaire dans le dictionnaire 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

C'est la documentation Flask sur l'accès aux données de requête.

Si vous avez besoin de formulaires plus compliqués qui nécessitent une validation, vous pouvez jeter un oeil à WTForms et Comment pour les intégrer avec Flask .

Remarque: sauf si vous avez d'autres restrictions, vous n'avez pas vraiment besoin de JavaScript du tout pour envoyer vos données (bien que vous puissiez les utiliser).

102
répondu pacha 2017-11-09 21:09:02

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
  }
});
9
répondu Kracekumar 2017-11-09 21:08:31

Toutes les interactions entre le serveur (votre application flask) et le client (navigateur) vont par requête et réponse. Lorsque l'utilisateur appuie 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')
2
répondu Denis 2012-09-05 09:29:01

En supposant que vous savez 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 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);
});
1
répondu Pratik Mandrekar 2012-09-05 09:26:07