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?
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?
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ć).
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
}
});
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')
Zakładając, że już wie, jak napisać widok na Flask
który reaguje na URL, stworzyć taki, który odczytuje request.post
dane. Aby dodać dane input box
do tego posta, utwórz formularz na swojej stronie z polem tekstowym. Następnie możesz użyć jquery
do zrobienia
var 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);
});
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
}
});