1
resposta

Novo jogo não é Criado

Quando removo o "render_template" do meu return ele não da append() no meu novo jogo.

ele não da nenhum erro, porém quando é redirecionado para('/') não mostra o jogo que acabei de crirar.

OBS: voltei o código até a parte de remover o render e colocar o redirect e tudo funciona normal

@app.route('/criar', methods=['POST',])
def criar():
    nome = request.form['nome']
    categoria = request.form['categoria']
    console = request.form['console']
    jogo = Jogo(nome, categoria, console)
    lista.append(jogo)
    return redirect('/')

app.run(debug=True)
1 resposta

Oii Bruno, como você está? Espero que esteja bem ^-^

Tem uma diferença entre o render_template e o redirect, o render_template irá renderizar um modelo html sem alterar a url atual, ou seja, só irá carregar o template html pedido e mantém a mesma rota. Observe que quando utilizamos o render_template, ele apenas nos mostra o arquivo da página index.html, mas a url permanece a mesma e isso faz com que não haja nenhuma requisição (pedido) no servidor, como mostro abaixo:

URL em render_template

Já o redirect irá recarregar a página e nos redirecionar para uma rota que foi programada e logo após isso, irá renderizar o html através do render_template. Veja que a url é modificada quando utilizamos o redirect:

URL da rota principal

Qualquer dúvida estou por aqui, a gente vai se falando.

Abraços e bons estudos!