it-swarm.com.de

Daten aus einer Textbox in Flask senden?

Ich habe mich gefragt, ob es eine Möglichkeit gibt, etwas aus einem Textfeld im HTML-Code zu entnehmen, es in eine Flasche zu übertragen und diese Daten dann mit Python zu analysieren. Ich dachte, das könnte etwas JS beinhalten, aber ich könnte mich irren. Irgendwelche Ideen?

75
ollien

Wenn Sie nicht etwas Komplizierteres tun möchten, ist es ziemlich einfach, Daten aus einem HTML-Formular in Flask einzugeben.

  • Erstellen Sie eine Ansicht, die eine POST request (my_form_post).
  • Zugriff auf die Formularelemente im Wörterbuch 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

Dies ist die Flask Dokumentation zu Zugriff auf Anforderungsdaten .

Wenn Sie kompliziertere Formulare benötigen, die überprüft werden müssen, können Sie sich WTForms und wie man sie in Flask integriert ansehen.

Hinweis: Sofern Sie keine anderen Einschränkungen haben, benötigen Sie JavaScript überhaupt nicht , um Ihre Daten zu senden (obwohl Sie es verwenden können).

119
pacha

Deklarieren Sie einen Flask Endpoint, um POST Eingabetyp zu akzeptieren, und führen Sie dann die erforderlichen Schritte aus. Verwenden Sie jQuery, um die Daten zu veröffentlichen.

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
  }
});
10
Kracekumar

Alle Interaktionen zwischen Server (Ihrer flask app) und Client (Browser) erfolgen auf Anfrage und Antwort. Wenn der Benutzer die Schaltfläche in Ihrem Formular absendet, sendet sein Browser eine Anfrage mit diesem Formular an Ihren Server (flask app) ), und Sie können den Inhalt des Formulars wie folgt erhalten:

request.args.get('form_name')
2
Denis

Angenommen, Sie wissen bereits, wie man eine Ansicht schreibt in Flask, das auf eine URL reagiert, eine erstellt, die die request.post - Daten liest. Um den input box Zu diesen Beitragsdaten hinzuzufügen, erstellen Sie auf Ihrer Seite ein Formular mit dem Textfeld. Sie können dann jquery verwenden, um dies zu tun

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

und poste dann asynchron in deine Ansicht, indem du so etwas wie das Folgende verwendest.

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

Das hat bei mir funktioniert.

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
      }
    });
0
Anurag Sharma