Eu queria saber se havia uma maneira de pegar algo de uma caixa de texto no HTML, colocá-lo em um frasco e, em seguida, analisar esses dados com Python. Eu estava pensando que isso poderia envolver algum JS, mas posso estar errado. Alguma ideia?
92
Respostas:
A menos que você queira fazer algo mais complicado, alimentar dados de um formulário HTML no Flask é muito fácil.
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
Esta é a documentação do Flask sobre como acessar os dados da solicitação .
Se você precisa de formulários mais complicados que precisam de validação, você pode dar uma olhada em WTForms e como integrá-los ao Flask .
Nota: a menos que você tiver quaisquer outras restrições, você realmente não precisa ter o JavaScript em tudo para enviar seus dados (embora você pode usá-lo).
fonte
app.debug = True
pouco antesapp.run()
para obter a exceção e o rastreamento do erro.<input type="text" name="text">
por<textarea name="text"></textarea>
e você estará bem.Declare um ponto de extremidade Flask para aceitar o tipo de entrada POST e execute as etapas necessárias. Use jQuery para postar os dados.
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 } });
fonte
Toda interação entre o servidor (seu aplicativo Flask) e o cliente (navegador) por meio de solicitação e resposta. Quando o usuário clica no botão enviar em seu formulário, seu navegador envia a solicitação com este formulário para o seu servidor (aplicativo flask), e você pode obter o conteúdo do formulário como:
request.args.get('form_name')
fonte
Supondo que você já sabe como escrever uma visão em
Flask
que responde a um url, criar um que lê orequest.post
dados. Para adicionar ainput box
esses dados de postagem, crie um formulário em sua página com a caixa de texto. Você pode então usarjquery
para fazervar data = $('#<form-id>').serialize()
e, em seguida, poste em sua visualização de forma assíncrona usando algo como o abaixo.
$.post('<your view url>', function(data) { $('.result').html(data); });
fonte
Isso funcionou para mim.
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 } });
fonte