Tôi đã tự hỏi liệu có cách nào để lấy thứ gì đó từ hộp văn bản trong HTML, nạp nó vào bình, sau đó phân tích cú pháp dữ liệu đó bằng Python. Tôi đã nghĩ điều này có thể liên quan đến một số JS nhưng tôi có thể sai. Có ý kiến gì không?
Tôi đã tự hỏi liệu có cách nào để lấy thứ gì đó từ hộp văn bản trong HTML, nạp nó vào bình, sau đó phân tích cú pháp dữ liệu đó bằng Python. Tôi đã nghĩ điều này có thể liên quan đến một số JS nhưng tôi có thể sai. Có ý kiến gì không?
Câu trả lời:
Trừ khi bạn muốn làm điều gì đó phức tạp hơn, việc cung cấp dữ liệu từ biểu mẫu HTML vào Flask khá dễ dàng.
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
Đây là tài liệu Flask về cách truy cập dữ liệu yêu cầu .
Nếu bạn cần các biểu mẫu phức tạp hơn cần xác thực thì bạn có thể xem qua WTForms và cách tích hợp chúng với Flask .
Lưu ý: trừ khi bạn có bất kỳ hạn chế khác, bạn không thực sự cần JavaScript ở tất cả để gửi dữ liệu của bạn (mặc dù bạn có thể sử dụng nó).
app.debug = True
ngay trước app.run()
để bạn có được ngoại lệ và truy xuất lỗi.
<input type="text" name="text">
bằng <textarea name="text"></textarea>
và bạn sẽ ổn.
Khai báo một điểm cuối Flask để chấp nhận kiểu đầu vào POST và sau đó thực hiện các bước cần thiết. Sử dụng jQuery để đăng dữ liệu.
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
}
});
Tất cả tương tác giữa máy chủ (ứng dụng flask của bạn) và máy khách (trình duyệt) sẽ theo yêu cầu và phản hồi. Khi người dùng nhấn nút gửi trong biểu mẫu của bạn, trình duyệt của họ sẽ gửi yêu cầu với biểu mẫu này đến máy chủ của bạn (ứng dụng bình) và bạn có thể nhận được nội dung của biểu mẫu như:
request.args.get('form_name')
Giả sử bạn đã biết làm thế nào để viết một cái nhìn trong Flask
trả lời rằng đến một url, tạo một mà đọc request.post
dữ liệu. Để thêm input box
dữ liệu vào bài đăng này, hãy tạo một biểu mẫu trên trang của bạn với hộp văn bản. Sau đó, bạn có thể sử dụng jquery
để làm
var data = $('#<form-id>').serialize()
và sau đó đăng lên chế độ xem của bạn một cách không đồng bộ bằng cách sử dụng một cái gì đó như bên dưới.
$.post('<your view url>', function(data) {
$('.result').html(data);
});
Điều này đã làm việc cho tôi.
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
}
});