Estou adorando o curso e gostaria de compartilhar uma dica:
Como as funções "criar" e "atualizar" são muito parecidas, é interessante reduzir a repetição do código. Portanto, o primeiro passo é identificar quais são as linhas que se repetem, que no caso desse projeto são os valores do formulário e salvar no banco de dados:
def criar():
#valores do formulário
nome = request.form['nome']
categoria = request.form['categoria']
console = request.form['console']
jogo = Jogos.query.filter_by(nome=nome).first()
if jogo:
flash('Jogo já existente!')
return redirect(url_for('index'))
novo_jogo = Jogos(nome=nome, categoria=categoria, console=console)
#salvar no banco
db.session.add(novo_jogo)
db.session.commit()
return redirect(url_for('index'))
def atualizar():
jogo = Jogos.query.filter_by(id=request.form['id']).first()
#valores do formulário
jogo.nome = request.form['nome']
jogo.categoria = request.form['categoria']
jogo.console = request.form['console']
#salvar no banco
db.session.add(jogo)
db.session.commit()
return redirect(url_for('index'))
Depois criamos as funções e substuímos as repetições:
def formulario_valores():
return (
request.form['nome'],
request.form['categoria'],
request.form['console']
)
def salvar_no_banco(objeto):
db.session.add(objeto)
db.session.commit()
def criar():
nome, categoria, console = formulario_valores()
jogo = Jogos.query.filter_by(nome=nome).first()
if jogo: #==True
flash('Jogo já listado!')
return redirect(url_for('index'))
novo_jogo = Jogos(nome=nome, categoria=categoria, console=console)
salvar_no_banco(novo_jogo)
return redirect(url_for('index'))
def atualizar():
jogo = Jogos.query.filter_by(id=request.form['id']).first()
jogo.nome, jogo.categoria, jogo.console = formulario_valores()
salvar_no_banco(jogo)
return redirect(url_for('index'))
Acho um exercício legal para se fazer durante os projetos :)