124 votes

Envoyer les données d'une boîte de texte dans Flask ?

Je me demandais s'il existait un moyen de prendre quelque chose dans une zone de texte dans le HTML, de l'introduire dans Flask, puis d'analyser ces données avec Python. Je pensais que cela pouvait impliquer du JS, mais je peux me tromper. Une idée ?

209voto

pacha Points 2633

À moins que vous ne vouliez faire quelque chose de plus compliqué, l'introduction de données d'un formulaire HTML dans Flask est assez simple.

  • Créer une vue qui accepte une requête POST ( my_form_post ).
  • Accéder aux éléments du 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 de Flask sur accès aux données de la demande .

Si vous avez besoin de formulaires plus compliqués nécessitant une validation, vous pouvez consulter le site Formulaires WTF y comment les intégrer à Flask .

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

17voto

kracekumar Points 2653

Déclarer un endpoint Flask pour accepter le type d'entrée POST et ensuite faire les étapes nécessaires. Utilisez jQuery pour poster 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
  }
});

3voto

Denis Points 1919

Toute interaction entre le serveur (votre application Flask) et le client (navigateur) se fait par requête et réponse. Lorsque l'utilisateur appuie sur le bouton "submit" de votre formulaire, son navigateur envoie une requête avec ce formulaire à votre serveur (application flask), et vous pouvez obtenir le contenu du formulaire comme suit :

request.args.get('form_name')

2voto

Pratik Mandrekar Points 2805

En supposant que vous savez déjà comment écrire une vue sur Flask qui répond à une url, créez-en une qui lit l'url de l'utilisateur. request.post données. Pour ajouter le input box à ce post data créer un formulaire sur votre page avec la zone de texte. Vous pouvez ensuite utiliser jquery à faire

var data = $('#<form-id>').serialize()

puis de poster dans votre vue de manière asynchrone en utilisant quelque chose comme ci-dessous.

$.post('<your view url>', function(data) {
  $('.result').html(data);
});

0voto

Anurag Sharma Points 56

Cela a marché 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
      }
    });

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X