1
resposta

Erro werkzeug.routing.BuildError: Could not build url for endpoint 'editar'. Did you forget to specify values ['id']?

Ao selecionar o jogo que será editado, o erro citado no titulo aparece.

Verifiquei que o erro ocorre nesse trecho de código:

    if 'usuario_logado' not in session or session['usuario_logado'] == None:
        return redirect(url_for('login', proxima=url_for('editar')))

Esse trecho é o que vai guardar a url do editar para me redirecionar após o login (caso não esteja logado).

Ao remover "proxima=url_for('editar')" o código funciona normalmente.

O que entendi é que o método editar pro qual vai redirecionar, caso eu não esteja logado, requer um id como parametro. O problema é esse mesmo? Como eu passaria esse parametro aqui?

Obs: meu código está exatamente igual ao vídeo, mas no vídeo ele funciona...

Código completo:

@app.route('/editar/<int:id>')
def editar(id):
    if 'usuario_logado' not in session or session['usuario_logado'] == None:
        return redirect(url_for('login', proxima=url_for('editar')))
    jogo = jogo_dao.busca_por_id(id)
    return render_template('editar.html', titulo='Editando jogo', jogo=jogo)
1 resposta

Oi André, tudo bem?

Perdão pela demora em lhe retornar. Este erro está ocorrendo porque a rota de editar precisa do parâmetro id e ele não está sendo passado no seu template lista.html.

No arquivo lista.html teremos que ter o seguinte trecho:

<td><a href="{{ url_for('editar', id=jogo.id)}}">Editar</a></td>

Tente isto.

Qualquer dúvida estou a disposição. Espero ter ajudado. Abraços e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software