Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Erro

Boa noite! Segui os passos da aula, porém deu erro, já conferi diversas vezes e aparentemente está tudo correto. Conseguem ajudar? Erro:


NoReverseMatch at /

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

Request Method:     GET
Request URL:     http://127.0.0.1:8000/
Django Version:     4.1
Exception Type:     NoReverseMatch
Exception Value:     

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

Exception Location:     C:\Users\chanr\AppData\Roaming\Python\Python310\site-packages\django\urls\resolvers.py, line 803, in _reverse_with_prefix
Raised during:     apps.galeria.views.index
Python Executable:     C:\Program Files\Python310\python.exe
Python Version:     3.10.10
Python Path:     

['C:\\cursos\\alura\\2915-projeto-django-4-aula_1',
 'C:\\Program Files\\Python310\\python310.zip',
 'C:\\Program Files\\Python310\\DLLs',
 'C:\\Program Files\\Python310\\lib',
 'C:\\Program Files\\Python310',
 'C:\\Users\\chanr\\AppData\\Roaming\\Python\\Python310\\site-packages',
 'C:\\Program Files\\Python310\\lib\\site-packages']

Server time:     Mon, 03 Apr 2023 22:48:16 -0300
Error during template rendering

In template C:\cursos\alura\2915-projeto-django-4-aula_1\templates\partials\_menu.html, error at line 24
Reverse for 'nova_imagem' not found. 'nova_imagem' is not a valid view function or pattern name.
14                 </div>
15             </div>
16         </header>
17         <main class="principal">
18             <section class="menu-lateral">
19                 <nav class="menu-lateral__navegacao">
20                     <a href="{% url 'index' %}"><img src="{% static '/assets/ícones/1x/Home - ativo.png' %}"> Home</a>
21                     <a href="{% url 'login' %}"><img src="{% static '/assets/ícones/1x/Mais vistas - inativo.png' %}"> Login</a>
22                     <a href="{% url 'cadastro' %}"><img src="{% static '/assets/ícones/1x/Novas - inativo.png' %}"> Cadastro</a>
23                     <a href="{% url 'logout' %}"><img src="{% static '/assets/ícones/1x/Surpreenda-me - inativo.png' %}"> Logout</a>
24                     <a href="{% url 'nova_imagem' %}"><img src="{% static '/assets/ícones/1x/Surpreenda-me - ativo.png' %}"> Nova Imagem</a>            
25                 </nav>
26             </section>

urls.py:

from django.urls import path
from apps.galeria.views import \
index, imagem, buscar, nova_imagem, editar_imagem, deletar_imagem 

urlpatterns = [
    path('', index, name='index'),
    path('imagem/<int:foto_id>', imagem, name='imagem'),
    path('buscar', buscar, name='buscar'),
    path('nova-imagem', nova_imagem, name='nova-imagem'),
    path('editar-imagem', editar_imagem, name='editar-imagem'),
    path('deletar-imagem', deletar_imagem, name='deletar-imagem'),

]

views.py:

from django.shortcuts import render, get_object_or_404, redirect

from apps.galeria.models import Fotografia

from django.contrib import messages

def index(request):
    if not request.user.is_authenticated:
        messages.error(request, 'Usuário não logado')
        return redirect('login')

    fotografias = Fotografia.objects.order_by("data_fotografia").filter(publicada=True)
    return render(request, 'galeria/index.html', {"cards": fotografias})

def imagem(request, foto_id):
    fotografia = get_object_or_404(Fotografia, pk=foto_id)
    return render(request, 'galeria/imagem.html', {"fotografia": fotografia})

def buscar(request):
    if not request.user.is_authenticated:
        messages.error(request, 'Usuário não logado')
        return redirect('login')

    fotografias = Fotografia.objects.order_by("data_fotografia").filter(publicada=True)

    if "buscar" in request.GET:
        nome_a_buscar = request.GET['buscar']
        if nome_a_buscar:
            fotografias = fotografias.filter(nome__icontains=nome_a_buscar)

    return render(request, "galeria/buscar.html", {"cards": fotografias})

def nova_imagem(request):
    return render(request, 'galeria/nova_imagem.html')

def editar_imagem(request):
    pass

def deletar_imagem(request):
    pass

nova_imagem.html:

<h1>Hello nova imagem</h1>
1 resposta
solução!

Troquei de:

path('nova-imagem', nova_imagem, name='nova-imagem'),

Para:

path('nova_imagem', nova_imagem, name='nova_imagem'),

e funcionou perfeitamente.