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

[Dúvida] Problemas na pesquisa

Olá boa tarde, eu fiz conforme a aula, e ate já revi algumas vezes pra ver se não fiz algo errado, mas o meu codigo tem gerado esse erro e já não sei mais oque pode ser Imagem apresentando o errodeixo aqui tbm o codigo do meu views.py

from django.shortcuts import render, get_object_or_404
from galeria.models import Fotografia


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


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


def buscar(request):
    fotografias = Fotografia.objects.order_by(
        "-data_foto").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})
1 resposta
solução!

Opa, Ricardo! Tudo bem? Espero que sim!

Analisando o print e trecho de código que você compartilhou, consegui identificar qual inconsistência estava causando esse erro. Você escreveu o método GET com apenas a primeira letra em maiúsculo, a forma correta seria ele inteiramente maiúsculo.

Logo, o seu método de "buscar" corrigido, fica assim:

def buscar(request):
    fotografias = Fotografia.objects.order_by("data_fotografia").filter(publicada=True)

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

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

Adicionei um comentário afrente da chamada do método GET que foi corrigida.

Espero ter ajudado e bons estudos!

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