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

Sugestão para simplificação de código para autenticação feita [Sugestão]

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?

1 resposta
solução!

[ATUALIZAÇÃO]: Descobri como fazer isso, no views.py coloquei o seguinte:

def login(request):
    form = LoginForms()

    if request.POST.get('next', None) not in ('cadastro', 'login', 'logout') and not request.user.is_authenticated:
            messages.error(request, 'Usuário não logado')

# código oculto