Nesta terceira parte da série sobre formulários com Flask, vamos aprender a atualizar registros existentes em um banco de dados SQLite. Nas partes anteriores, configuramos o ambiente Flask, criamos um formulário para inserir dados e aprendemos a listar e deletar registros. Agora, avançaremos um passo e implementaremos a funcionalidade de edição de registros.
Essa é a última etapa para construir um sistema CRUD completo (Create, Read, Update, Delete) usando Flask e SQLAlchemy com SQLite.
Caso você tenha perdido algum dos posts anteriores, aqui está um breve resumo:
Primeiro, precisamos criar um novo template de formulário para editar os dados. Para isso, crie um arquivo chamado editar.html
(ou adapte o formulario.html
se preferir) para exibir o formulário preenchido com os dados atuais do registro.
Código do Template de Edição (editar.html):
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<title>Editar Registro</title>
</head>
<body>
<h1>Editar Registro</h1>
<form action="{{ url_for('editar', id=dado.id) }}" method="POST">
<label for="nome">Nome:</label>
<input type="text" name="nome" id="nome" value="{{ dado.nome }}" required><br><br>
<label for="mensagem">Mensagem:</label>
<input type="text" name="mensagem" id="mensagem" value="{{ dado.mensagem }}" required><br><br>
<button type="submit">Salvar Alterações</button>
</form>
</body>
</html>
Esse formulário carrega os valores atuais do registro, permitindo ao usuário editar o conteúdo.
Em seguida, vamos adicionar uma rota para carregar o formulário de edição e salvar as alterações. Essa rota usará um parâmetro id
para identificar o registro específico.
Código da Rota de Edição:
@app.route('/editar/<int:id>', methods=['GET', 'POST'])
def editar(id):
# Busca o registro pelo ID
dado = DadosFormulario.query.get_or_404(id)
if request.method == 'POST':
# Atualiza os dados do registro com os valores do formulário
dado.nome = request.form['nome']
dado.mensagem = request.form['mensagem']
# Salva as alterações no banco de dados
db.session.commit()
# Redireciona para a página de listagem
return redirect(url_for('listar'))
# Renderiza o template de edição com os dados atuais
return render_template('editar.html', dado=dado)
Esse código faz o seguinte:
Para facilitar o acesso à funcionalidade de edição, adicione um link ao lado de cada registro na página de listagem (lista.html
).
Código do Link de Edição em lista.html:
<!DOCTYPE html><html lang="pt-BR">
<head>
<meta charset="UTF-8">
<title>Listagem de Registros</title>
</head>
<body>
<h1>Lista de Registros</h1>
<ul>
{% for dado in dados %}
<li>{{ dado.nome }} - {{ dado.mensagem }}
<a href="{{ url_for('editar', id=dado.id) }}">Editar</a>
<a href="{{ url_for('deletar', id=dado.id) }}">Deletar</a>
</li>
{% endfor %}
</ul>
</body>
</html>
Esse link permite ao usuário acessar rapidamente o formulário de edição de cada registro.
Com as alterações concluídas, execute a aplicação Flask e faça alguns testes para verificar se tudo funciona corretamente. Para testar:
1. Acesse a listagem de registros e clique em “Editar” ao lado de um registro.
2. Altere os valores e clique em “Salvar Alterações.”
3. Verifique se o registro foi atualizado corretamente na página de listagem.
Com isso, completamos a funcionalidade de CRUD para gerenciar dados no Flask com SQLite! Agora, seu aplicativo é capaz de inserir, listar, deletar e editar registros.
Para tornar a aplicação mais robusta, você pode:
Você pode baixar também todos os arquivos do artigo no github abaixo:
Arquivos do Projeto no Github
Se ainda não sabe usar o github ou tem duvidas, temos um tutorial aqui no blog sobre como usar o git
Para tornar a aplicação mais robusta, você pode:
1. Adicionar autenticação para restringir o acesso às funções de edição e exclusão.
2. Implementar uma confirmação antes de salvar alterações ou deletar registros.
Com essas práticas, você terá uma base sólida para expandir sua aplicação Flask. Se tiver dúvidas ou sugestões, deixe seu comentário abaixo!
Comentarios Recentes