1
resposta

send_from_directory lança erro werkzeug.routing.BuildError: Could not build url for endpoint

a página não carrega de jeito nenhum. fica dando o seguinte erro:

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

no app está assim:

@app.route('/uploads/<nome_arquivo>')
def imagem(nome_arquivo):
    return send_from_directory('uploads', nome_arquivo)

e no HTML está assim:

 <img src="{{ url_for('imagem', nome_arquivo='capa_padrao.jpg') }}">

onde capa_padrao.jpg é o nome da imagem que quero exibir.

1 resposta

Olá Eloy, tudo bem com você?

Peço desculpas pela demora no retorno.

O erro apresentado, werkzeug.routing.BuildError: Could not build url for endpoint 'imagem'. Did you forget to specify values ['nome_arquivo'], está informando que não foi encontrado um ponto de referência para o parâmetro nome_arquivo, esse parâmetro é declarado na tag img presente nos arquivos .html.

Realizei testes e simulações com os códigos enviados e os mesmos estão funcionando corretamente, apresentando as imagens e não é gerado erro.

Peço que confirme se o parâmetro nome_arquivo foi declarado nas tag img dos arquivos editar.html e novo.html. Realizando simulações removendo a declaração em um desses arquivos obtive o mesmo erro.

Deixo abaixo a forma que a tag img deve ser declarada em cada arquivo.

Arquivo editar.html

<img src="{{ url_for('imagem', nome_arquivo=capa_jogo) }}">

Arquivo novo.html

<img src="{{ url_for('imagem', nome_arquivo='capa_padrao.jpg') }}">

Após realizar a conferência, salve os arquivos e execute o servidor novamente clicando com o botão direito no arquivo jogoteca.py e escolhendo Run jogoteca. Quando o servidor estiver sendo executado, acesse as páginas novo e editar, verificando se o erro é apresentado.

Caso o erro permaneça, peço que compartilhe o projeto completo, assim poderei realizar simulações com eles, basta realizar o upload dos arquivos do projeto em um site de hospedagem e enviar o link de compartilhamento na resposta desta postagem.

Fico à disposição em caso de dúvidas.

Abraços e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!