Formulários e dados da solicitação
Processe dados fornecidos pelo usuário
Formulários e dados da solicitação é uma aula grátis de Python Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Python Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Python Academy inclui 4 aulas no total.
O objeto request
O Flask fornece a cada visualização acesso a um objeto global request que contém todos os dados recebidos: campos de formulário, strings de consulta, JSON, cabeçalhos e muito mais.
from flask import Flask, request
app = Flask(__name__)
# request is available inside any view
print('request carries the incoming data')Parâmetros da string de consulta
Os dados depois de ? na URL ficam em request.args. Use .get() para ler um valor com segurança.
from flask import Flask, request
app = Flask(__name__)
@app.route('/search')
def search():
term = request.args.get('q', '')
return 'Searching for ' + term
print('/search?q=cats -> request.args')Um formulário HTML
Um formulário envia dados quando é submetido. Os atributos method e action determinam como e para onde os dados serão enviados.
# <form method='POST' action='/login'>
# <input name='username'>
# <input name='password' type='password'>
# <button>Submit</button>
# </form>
print('Form posts username and password')Lendo dados do formulário
Os campos submetidos do formulário chegam em request.form. Acesse-os pelo atributo name do campo de entrada.
from flask import Flask, request
app = Flask(__name__)
@app.route('/login', methods=['POST'])
def login():
user = request.form['username']
return 'Welcome ' + user
print('request.form holds posted fields')Acesso seguro com get
Usar request.form['x'] gera um erro se a chave estiver ausente. Prefira request.form.get('x'), que retorna None em vez disso.
from flask import Flask, request
app = Flask(__name__)
@app.route('/login', methods=['POST'])
def login():
user = request.form.get('username')
if not user:
return 'Missing username', 400
return 'Welcome ' + user
print('.get avoids KeyError')GET e POST em uma visualização
Um padrão comum é exibir o formulário em GET e processar os dados em POST, tudo na mesma visualização.
from flask import Flask, request, render_template
app = Flask(__name__)
@app.route('/contact', methods=['GET', 'POST'])
def contact():
if request.method == 'POST':
return 'Thanks, ' + request.form.get('name', 'friend')
return render_template('contact.html')
print('One view, two methods')Validando dados de entrada
Nunca confie nos dados fornecidos pelo usuário. Verifique se os campos obrigatórios existem e têm valores razoáveis antes de usá-los.
from flask import Flask, request
app = Flask(__name__)
@app.route('/age', methods=['POST'])
def age():
raw = request.form.get('age', '')
if not raw.isdigit():
return 'Age must be a number', 400
return 'Age is ' + raw
print('Validate before trusting input')Lendo JSON
Clientes de API costumam enviar JSON. request.get_json() analisa o corpo e o transforma em um dicionário Python.
from flask import Flask, request
app = Flask(__name__)
@app.route('/api', methods=['POST'])
def api():
data = request.get_json()
return 'Got name ' + data.get('name', '?')
print('get_json parses the JSON body')Envios de arquivos
Os arquivos enviados ficam em request.files. Salve um deles com seu método .save() depois de validá-lo.
from flask import Flask, request
app = Flask(__name__)
@app.route('/upload', methods=['POST'])
def upload():
f = request.files.get('photo')
if f:
return 'Received ' + f.filename
return 'No file', 400
print('request.files holds uploads')Redirecionando após POST
Depois de processar um formulário, redirecione o usuário para evitar envios duplicados ao atualizar a página. Use redirect(url_for(...)).
from flask import Flask, redirect, url_for
app = Flask(__name__)
@app.route('/done')
def done():
return 'All done'
@app.route('/save', methods=['POST'])
def save():
return redirect(url_for('done'))
print('Post/Redirect/Get pattern')Mensagens instantâneas
flash() armazena uma mensagem de uso único, exibida depois de um redirecionamento, sendo ideal para confirmações como 'Salvo com sucesso'.
from flask import Flask, flash, redirect, url_for
app = Flask(__name__)
app.secret_key = 'change-me'
@app.route('/save', methods=['POST'])
def save():
flash('Saved successfully')
return redirect(url_for('save'))
print('flash shows a one-time message')Verificação rápida
Teste seus conhecimentos sobre processamento de formulários.
Recapitulação
Você processou dados fornecidos pelo usuário no Flask.
request.argspara strings de consulta,request.formpara campos de formuláriorequest.get_json()para corpos JSON,request.filespara envios de arquivos- Sempre valide os dados de entrada e use
.get()para acessá-los com segurança - Use POST/Redirecionamento/GET e
flash()para uma experiência de usuário mais limpa
Perguntas Frequentes
A aula “Formulários e dados da solicitação” é grátis?
Sim — o texto completo de “Formulários e dados da solicitação” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Python Academy, atualize para CoddyKit PRO. O curso de Python Academy inclui 4 aulas no total.
O que vou aprender em “Formulários e dados da solicitação”?
Processe dados fornecidos pelo usuário Você pratica Python Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Python Academy?
Nenhuma experiência prévia é necessária. Python Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Formulários e dados da solicitação”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Python Academy?
Sim. Cada aula de Python Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Rotas e visualizações
- Modelos com Jinja2
- Formulários e dados da solicitação
- Construção de um endpoint REST