Мені було цікаво, чи є спосіб взяти щось із текстового поля в HTML, подати його в колбу, а потім проаналізувати ці дані за допомогою Python. Я думав, що це може задіяти якусь JS, але я можу помилитися. Будь-які ідеї?
Мені було цікаво, чи є спосіб взяти щось із текстового поля в HTML, подати його в колбу, а потім проаналізувати ці дані за допомогою Python. Я думав, що це може задіяти якусь JS, але я можу помилитися. Будь-які ідеї?
Відповіді:
Якщо ви не хочете зробити щось більш складне, подача даних із форми HTML у Flask досить проста.
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
Це документація Flask про доступ до даних запиту .
Якщо вам потрібні більш складні форми, які потребують перевірки, тоді ви можете поглянути на WTForms і як інтегрувати їх у Flask .
Примітка: якщо у вас є якісь - або інші обмеження, ви дійсно не потрібно JavaScript на все , щоб відправити дані (хоча ви можете використовувати його).
app.debug = True
перед цим, app.run()
щоб ви отримали виняток та зворотний зв'язок помилки.
<input type="text" name="text">
на, <textarea name="text"></textarea>
і у вас все буде добре.
Оголосіть кінцеву точку колби, щоб прийняти тип введення POST, а потім виконайте необхідні дії. Використовуйте jQuery для опублікування даних.
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
}
});
Вся взаємодія між сервером (додаток-колба) та клієнтом (браузер) відбувається за запитом та відповіддю. Коли користувач натискає кнопку "Надіслати" у вашій формі, його браузер надсилає запит із цією формою на ваш сервер (додаток-колба), і ви можете отримати вміст форми, наприклад:
request.args.get('form_name')
Припускаючи , що ви вже знаєте , як написати подання в Flask
який реагує на URL, створити який зчитує request.post
дані. Щоб додати дані input box
до цього повідомлення, створіть форму на своїй сторінці з текстовим полем. Потім ви можете використовувати, jquery
щоб зробити
var data = $('#<form-id>').serialize()
а потім розмістіть у своєму поданні асинхронно, використовуючи щось на зразок нижче.
$.post('<your view url>', function(data) {
$('.result').html(data);
});
Це спрацювало для мене.
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
}
});