2
respostas

[Bug] Could not build url for endpoint 'editar'. Did you forget to specify values ['id']?

Recebi esse erro ao entrar na página de edição da lista, mudei a função editar como na aula.

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

O código está assim:

@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 = Jogos.query.filter_by(id=id).first()

    return render_template('editar.html', titulo='Editando jogo', jogo=jogo)

Parte do html:

{% extends 'template.html' %}

{% block conteudo %}
    <form action="{{ url_for('atualizar') }}" method="post">
      <fieldset>
        <div class="form-group">
          <label for="nome">Nome</label>
          <input type="text" id="nome" name="nome" class="form-control" value="{{jogo.nome}}">
        </div>
        <div class="form-group">
          <label for="categoria">Categoria</label>
          <input type="text" id="categoria" name="categoria" class="form-control" value="{{jogo.categoria}}">
        </div>
        <div class="form-group">
          <label for="console">Console</label>
          <input type="text" id="console" name="console" class="form-control" value="{{jogo.console}}">
        </div>
        <button type="submit" class="btn btn-primary btn-salvar">Salvar</button>
      </fieldset>
    </form>
{% endblock %}

Erro recebido no servidor/browser

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

Traceback (most recent call last)
File "C:\Users....

return redirect(url_for('login', proxima=url_for('editar')))
                                         ^^^^^^^^^^^^^^^^^build
raise BuildError(endpoint, values, method, self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
werkzeug.routing.exceptions.BuildError: Could not build url for endpoint 'editar'. Did you forget to specify values ['id']?
The debugger caught an exception in your WSGI application. You can now look at the traceback which led to the error.
To switch between the interactive traceback and the plaintext one, you can click on the "Traceback" headline. From the text traceback you can also create a paste of it. For code execution mouse-over the frame you want to debug and click on the console icon on the right side.

You can execute arbitrary Python code in the stack frames and there are some extra helpers available for introspection:

dump() shows all variables in the frame
dump(obj) dumps all that's known about the object
2 respostas

Pessoal, acabei resolvendo, tinha algumas declarações erradas no html, seguindo pra próxima aula, valeu

Boa tarde, Brandon! Tudo bem?

Fico feliz que tenha conseguido resolver o seu problema. Caso não seja um incômodo, compartilhe a forma que você resolveu o seu problema, assim você pode ajudar outros alunos que tiveram o mesmo problema que você.

No mais, bons estudos!