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?
Wenn Sie nicht etwas Komplizierteres tun möchten, ist es ziemlich einfach, Daten aus einem HTML-Formular in Flask einzugeben.
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
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).
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
}
});
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')
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);
});
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
}
});