A função redirect()
do Flask é essencial para guiar usuários através do seu aplicativo web. Ela permite que você faça transições suaves de usuários para URLs diferentes após ações específicas, como envios de formulários ou logins. No entanto, simplesmente redirecionar não é sempre suficiente; você frequentemente precisa passar dados para a nova página. Este artigo explica como usar redirect()
efetivamente com parâmetros em seus aplicativos Flask, focando em melhores práticas de segurança.
Sumário
- Entendendo a Necessidade de Passagem de Parâmetros
- Método 1: Usando Parâmetros de URL para Dados Não Sensíveis
- Método 2: Usando Sessões Flask para Dados Sensíveis
- Escolhendo o Método Certo
Entendendo a Necessidade de Passagem de Parâmetros
A função redirect()
principal não suporta inerentemente a passagem de parâmetros diretamente. Ela aceita uma URL como entrada. Para transmitir dados, você deve utilizar parâmetros de URL ou gerenciamento de sessão do lado do servidor.
Método 1: Usando Parâmetros de URL para Dados Não Sensíveis
A abordagem mais comum envolve adicionar parâmetros à URL como uma string de consulta (a parte após o ponto de interrogação ‘?’). Os parâmetros são pares chave-valor separados por ampersands (‘&’).
from flask import Flask, render_template, redirect, url_for, request
app = Flask(__name__)
@app.route('/form', methods=['GET', 'POST'])
def my_form():
if request.method == 'POST':
name = request.form['name']
age = request.form['age']
return redirect(url_for('success', name=name, age=age))
return render_template('form.html')
@app.route('/success')
def success():
name = request.args.get('name')
age = request.args.get('age')
return f"Sucesso! Nome: {name}, Idade: {age}"
if __name__ == '__main__':
app.run(debug=True)
<form method="POST">
<label for="name">Nome:</label>
<input type="text" id="name" name="name"><br><br>
<label for="age">Idade:</label>
<input type="text" id="age" name="age"><br><br>
<input type="submit" value="Enviar">
</form>
Isso cria URLs como /success?name=John&age=30
. url_for
simplifica o manuseio de parâmetros.
Método 2: Usando Sessões Flask para Dados Sensíveis
Para dados sensíveis (IDs de usuário, tokens de autenticação), nunca use parâmetros de URL. O objeto de sessão do Flask fornece armazenamento do lado do servidor, associando dados à sessão de um usuário.
from flask import Flask, render_template, redirect, url_for, request, session
app = Flask(__name__)
app.secret_key = 'your_secret_key' # SUBSTITUA por uma chave forte, gerada aleatoriamente
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form['username']
# ... lógica de autenticação ...
if username == "validuser":
session['username'] = username
return redirect(url_for('dashboard'))
return render_template('login.html')
@app.route('/dashboard')
def dashboard():
username = session.get('username')
if username:
return f"Bem-vindo, {username}!"
else:
return redirect(url_for('login'))
if __name__ == '__main__':
app.run(debug=True)
Crucialmente, defina uma secret_key
forte, gerada aleatoriamente. Isso é vital para a criptografia de dados de sessão.
Escolhendo o Método Certo
Use parâmetros de URL para dados não sensíveis visíveis na URL. Use sessões para dados confidenciais que devem permanecer privados.
Este guia demonstra a passagem de parâmetros segura e eficiente com a função redirect()
do Flask, garantindo uma experiência de usuário suave e segura.