Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro ao clicar na opção Editar sem fazer o login

Saudações!

Quando clico na opção Editar de algum jogo sem antes ter feito o login, ao invés de ser redirecionado para a página de login, aparece o seguinte erro:

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\Adriano\Developing\Python\Alura - Flask\jogoteca\venv\Lib\site-packages\flask\app.py", line 1488, in __call__
return self.wsgi_app(environ, start_response)
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Adriano\Developing\Python\Alura - Flask\jogoteca\venv\Lib\site-packages\flask\app.py", line 1466, in wsgi_app
response = self.handle_exception(e)
           ^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Adriano\Developing\Python\Alura - Flask\jogoteca\venv\Lib\site-packages\flask\app.py", line 1463, in wsgi_app
response = self.full_dispatch_request()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Adriano\Developing\Python\Alura - Flask\jogoteca\venv\Lib\site-packages\flask\app.py", line 872, in full_dispatch_request
rv = self.handle_user_exception(e)
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Adriano\Developing\Python\Alura - Flask\jogoteca\venv\Lib\site-packages\flask\app.py", line 870, in full_dispatch_request
rv = self.dispatch_request()
     ^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Adriano\Developing\Python\Alura - Flask\jogoteca\venv\Lib\site-packages\flask\app.py", line 855, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Adriano\Developing\Python\Alura - Flask\jogoteca\views.py", line 52, in editar
return redirect(url_for('login',proxima = url_for('editar')))
                                          ^^^^^^^^^^^^^^^^^
File "C:\Users\Adriano\Developing\Python\Alura - Flask\jogoteca\venv\Lib\site-packages\flask\helpers.py", line 220, in url_for
return current_app.url_for(
       
File "C:\Users\Adriano\Developing\Python\Alura - Flask\jogoteca\venv\Lib\site-packages\flask\app.py", line 1074, in url_for
return self.handle_url_build_error(error, endpoint, values)
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Adriano\Developing\Python\Alura - Flask\jogoteca\venv\Lib\site-packages\flask\app.py", line 1063, in url_for
rv = url_adapter.build(  # type: ignore[union-attr]
     
File "C:\Users\Adriano\Developing\Python\Alura - Flask\jogoteca\venv\Lib\site-packages\werkzeug\routing\map.py", line 919, in 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

Quando faço o login antes de Editar, o erro não ocorre.

2 respostas
solução!

Resolvi o problema, o erro ocorre devido falar informar o parâmetro "id = id" dentro da url_for "proxima" da rota editar.

Oi, Adriano! Espero que esteja tudo bem por aí!

É ótimo saber que você conseguiu resolver o problema por conta própria! Não esqueça que caso ainda haja alguma dúvida estou à disposição aqui no fórum!

Um forte abraço e bons estudos!