2
respostas

Error during template rendering

Pra mim da erro quando uso <a href=" {% url 'imagem' %} ">, mas funciona quando uso <a href="imagem">, por que isso acontece?

Reverse for 'imagem' not found. 'imagem' is not a valid view function or pattern name.

Template error:
In template C:\Users\luisa\OneDrive\Documentos\Cursos Alura\Python\AluraSpace\templates\galeria\index.html, error at line 55
   Reverse for 'imagem' not found. 'imagem' is not a valid view function or pattern name.
   45 :                         <li class="tags__tag">Estrela</li>
   46 :                         <li class="tags__tag">Galáxia</li>
   47 :                         <li class="tags__tag">Planeta</li>
   48 :                     </ul>
   49 :                 </section>
   50 :                 <section class="galeria">
   51 :                     <div class="cards">
   52 :                         <h2 class="cards__titulo">Navegue pela galeria</h2>
   53 :                         <ul class="cards__lista">
   54 :                             <li class="card">
   55 :                                 <a href=" {% url 'imagem' %} ">
   56 :                                     <img class="card__imagem" src="{% static '/assets/imagens/galeria/carina-nebula.png'%}" alt="foto">
   57 :                                 </a>
   58 :                                 <span class="card__tag">Estrelas</span>
   59 :                                 <div class="card__info">
   60 :                                     <p class="card__titulo">Nome da foto</p>
   61 :                                     <div class="card__texto">
   62 :                                         <p class="card__descricao">Fonte/fotógrafo/satélite</p>
   63 :                                         <span>
   64 :                                             <img src="{% static '/assets/ícones/1x/favorite_outline.png'%}" alt="ícone de coração">
   65 :                                         </span>
2 respostas

Olá Luisandro! Tudo bem?

A tag {% url 'nome_da_url' %} é um recurso do Django para evitar a escrita de URLs hardcoded. Isso significa que, se você alterar a URL no seu arquivo urls.py, não precisará alterar em todos os lugares onde a URL é usada, pois o Django irá automaticamente buscar a nova URL.

No seu caso, o erro Reverse for 'imagem' not found. 'imagem' is not a valid view function or pattern name. indica que o Django não conseguiu encontrar uma URL com o nome 'imagem' no seu arquivo urls.py.

Para resolver esse problema, você precisa garantir que a URL 'imagem' esteja definida no seu arquivo urls.py. De acordo com o texto da aula, o urls.py deveria ser algo assim:

urlpatterns = [
    path('', index, name='index'),
    path('imagem/', imagem, name='imagem'),
]

Se você já tem isso no seu arquivo urls.py e ainda assim está recebendo o erro, verifique se o arquivo urls.py está no lugar certo e se o Django está conseguindo importá-lo corretamente. Além disso, certifique-se de que o servidor Django está sendo reiniciado após fazer as alterações no arquivo urls.py, pois o Django carrega as URLs apenas quando o servidor é iniciado.

Espero ter ajudado e bons estudos!

Na aula foi apresentado nesse formato:

urlpatterns = [
    path('', index),
    path('imagem/', imagem),
]

Adicionei o terceiro parâmetro como sugerido na resposta path('imagem/', imagem, name='imagem'), agora funcionou, sugiro colocar essa informação na transcrição da aula que fica abaixo do video.