Pesquisando melhor na documentação do Django descobri um decorator feito especialmente para o redirecionamento de um usuário enquanto o usuário não estiver logado, é o decorator login_required(), segue o código:
from django.shortcuts import render, get_object_or_404
from galeria.models import Fotografia
from django.contrib.auth.decorators import login_required
@login_required(login_url='login')
def index(request):
fotografias = Fotografia.objects.order_by("data_fotografia").filter(publicada=True)
return render(request, 'galeria/index.html', {"cards": fotografias})
@login_required(login_url='login')
def imagem(request, foto_id):
fotografia = get_object_or_404(Fotografia, pk=foto_id)
return render(request, 'galeria/imagem.html', {"fotografia": fotografia})
@login_required(login_url='login')
def buscar(request):
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})
Assim, o código fica mais clean e faz a mesma coisa. Mas há alguma forma de fazer aparecer a mensagem de que não está logado quando redirecionar?