Olá Alessandro. Tudo bem?
A diferença entre os dois casos que você mencionou está relacionada à forma como os parâmetros são passados para a função filter_by
.
Na rota "atualizar", você está utilizando request.form['id']
para obter o valor do ID a partir de um formulário enviado via método POST. Isso significa que o ID está sendo enviado como parte dos dados do formulário, e você precisa acessá-lo dessa maneira. A variável jogo
é utilizada para armazenar o resultado da consulta, permitindo que você trabalhe com esse objeto posteriormente na função.
@app.route('/atualizar', methods=['POST'])
def atualizar():
jogo = Jogos.query.filter_by(id=request.form['id']).first()
Já na rota "deletar", o ID é passado diretamente na URL como um parâmetro de rota. Isso é indicado por <int:id>
na definição da rota, o que significa que o Flask automaticamente captura esse valor e o passa como argumento para a função deletar
. Nesse caso, você não precisa acessar o ID através de request.form
, pois ele já é recebido como um parâmetro da função.
@app.route('/deletar/<int:id>')
def deletar(id):
if 'usuario_logado' not in session or session['usuario_logado'] is None:
return redirect(url_for('login'))
Jogos.query.filter_by(id=id).delete()
db.session.commit()
flash('Jogo deletado com sucesso!')
return redirect(url_for('index'))
A razão pela qual o resultado da query não é armazenado em uma variável na rota "deletar" é porque o objetivo dessa rota é simplesmente deletar o registro correspondente, e não manipular ou exibir os dados antes de deletá-los. Assim, não há necessidade de armazenar o resultado em uma variável.
Espero ter ajudado.
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!