Saya bertanya-tanya apakah ada cara untuk mengambil sesuatu dari kotak teks di HTML, memasukkannya ke dalam termos, lalu mengurai datanya dengan Python. Saya berpikir ini mungkin melibatkan beberapa JS tetapi saya bisa saja salah. Ada ide?
93
Jawaban:
Kecuali Anda ingin melakukan sesuatu yang lebih rumit, memasukkan data dari formulir HTML ke Flask sangatlah mudah.
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
Ini adalah dokumentasi tentang Flask mengakses data permintaan .
Jika Anda membutuhkan formulir yang lebih rumit yang memerlukan validasi, Anda dapat melihat WTForms dan cara mengintegrasikannya dengan Flask .
Catatan: kecuali Anda memiliki batasan lain, Anda tidak benar-benar membutuhkan JavaScript sama sekali untuk mengirim data Anda (meskipun Anda dapat menggunakannya).
sumber
app.debug = True
tepat sebelumnyaapp.run()
sehingga Anda mendapatkan pengecualian dan penelusuran kembali kesalahan.<input type="text" name="text">
dengan<textarea name="text"></textarea>
dan Anda akan baik-baik saja.Deklarasikan titik akhir Flask untuk menerima jenis input POST lalu lakukan langkah-langkah yang diperlukan. Gunakan jQuery untuk memposting data.
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 } });
sumber
Semua interaksi antara server (aplikasi flask Anda) dan klien (browser) dilakukan berdasarkan permintaan dan respons. Ketika pengguna menekan tombol kirim dalam formulir Anda, browsernya mengirim permintaan dengan formulir ini ke server Anda (aplikasi flask), dan Anda bisa mendapatkan konten dari formulir seperti:
request.args.get('form_name')
sumber
Dengan asumsi Anda sudah tahu bagaimana menulis pandangan di
Flask
respon bahwa untuk url, membuat satu yang membacarequest.post
data. Untuk menambahkaninput box
data posting ini, buat formulir di halaman Anda dengan kotak teks. Anda kemudian dapat menggunakanjquery
untuk melakukanvar data = $('#<form-id>').serialize()
dan kemudian posting ke tampilan Anda secara asinkron menggunakan sesuatu seperti di bawah ini.
$.post('<your view url>', function(data) { $('.result').html(data); });
sumber
Ini berhasil untuk saya.
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 } });
sumber