Отправить данные из текстового поля в колбу?


Мне было интересно, есть ли способ взять что-то из текстового поля в HTML, передать его в колбу, а затем проанализировать эти данные с помощью Python. Я думал, что это может включать в себя некоторые JS, но я могу ошибаться. Есть идеи?

4 61

4 ответа:

если вы не хотите делать что-то более сложное, подача данных из HTML-формы в колбу довольно проста.

  • создать представление, которое принимает запрос POST (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

это колба документация о доступ к данным запроса.

Если вам нужны более сложные формы, которые нуждаются в проверке тогда вы можете взглянуть на WTForms и как интегрировать их с колбы.

Примечание: Если у вас нет никаких других ограничений, вам действительно не нужен JavaScript на всех для отправки ваших данных (хотя вы можете использовать его).

объявите конечную точку колбы, чтобы принять тип ввода 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) и клиентом (браузером) происходит по запросу и ответу. Когда пользователь нажимает кнопку "отправить" в своей форме, его браузер отправляет запрос с этой формой на ваш сервер (приложение 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);
});