Percebi que seria possível otimizar a função "buscar", já que - como feita na aula - ela busca TODOS os elementos do banco de dados ANTES de fazer a filtragem pelo termo inserido pelo usuário, o que torna a função muito custosa em termos de processamento e acesso ao banco de dados. Com isso em mente, realizei uma otimização desta função, como segue, garantindo que ela faça retorne do banco de dados apenas os termos filtrados.
def buscar(request):
busca = request.GET.get('buscar', '').strip()
if busca:
fotografias = Fotografia.objects.filter(
publicada=True,
nome__icontains=busca
).order_by('-data_fotografia')
else:
fotografias = Fotografia.objects.filter(
publicada=True
).order_by('-data_fotografia')
return render(request, 'galeria/buscar.html', {"cards": fotografias})