Мне было интересно, есть ли способ взять что-то из текстового поля в HTML, передать это во флягу, а затем проанализировать эти данные с помощью Python. Я думал, что здесь может быть задействован JS, но я мог ошибаться. Любые идеи?
92
Ответы:
Если вы не хотите делать что-то более сложное, загрузить данные из 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>
и все будет в порядке.Объявите конечную точку Flask для приема типа ввода 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 } });
источник
Все взаимодействие между сервером (вашим флеш-приложением) и клиентом (браузером) происходит по запросу и по ответу. Когда пользователь нажимает кнопку отправки в вашей форме, его браузер отправляет запрос с этой формой на ваш сервер (приложение Flask), и вы можете получить содержимое формы, например:
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 } });
источник