Zastanawiałem się, czy istnieje sposób na pobranie czegoś z pola tekstowego w HTML, wprowadzenie go do kolby, a następnie przeanalizowanie tych danych w Pythonie. Myślałem, że to może obejmować JS, ale mogę się mylić. Jakieś pomysły?
92
Odpowiedzi:
Jeśli nie chcesz zrobić czegoś bardziej skomplikowanego, przesyłanie danych z formularza HTML do Flask jest całkiem proste.
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
To jest dokumentacja Flask dotycząca dostępu do danych żądań .
Jeśli potrzebujesz bardziej skomplikowanych formularzy, które wymagają walidacji, możesz rzucić okiem na WTForms i jak je zintegrować z Flaskiem .
Uwaga: jeśli nie masz żadnych innych ograniczeń, naprawdę nie trzeba JavaScript w ogóle wysłać swoje dane (chociaż można go używać).
źródło
app.debug = True
tuż przed,app.run()
aby uzyskać wyjątek i śledzenie błędu.<input type="text" name="text">
na<textarea name="text"></textarea>
i powinno być dobrze.Zadeklaruj punkt końcowy Flask, aby zaakceptować typ danych wejściowych POST, a następnie wykonaj niezbędne kroki. Użyj jQuery, aby opublikować dane.
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 } });
źródło
Cała interakcja między serwerem (Twoją aplikacją Flask) a klientem (przeglądarką) odbywa się poprzez żądanie i odpowiedź. Gdy użytkownik kliknie przycisk, prześle w formularzu, jego przeglądarka wyśle żądanie z tym formularzem na Twój serwer (aplikacja flask), a otrzymasz zawartość formularza taką jak:
request.args.get('form_name')
źródło
Zakładając, że już wie, jak napisać widok na
Flask
który reaguje na URL, stworzyć taki, który odczytujerequest.post
dane. Aby dodać daneinput box
do tego posta, utwórz formularz na swojej stronie z polem tekstowym. Następnie możesz użyćjquery
do zrobieniavar data = $('#<form-id>').serialize()
a następnie publikuj w swoim widoku asynchronicznie, używając czegoś takiego jak poniżej.
$.post('<your view url>', function(data) { $('.result').html(data); });
źródło
To zadziałało dla mnie.
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 } });
źródło