As mensagens não estão aparecendo, apenas os prints. Não estou conseguindo localizar onde está o erro.
Código dos _alertas (dentro de partials):
{% if messages %}
{% for messsage in messages %}
<div class="alert alert-{{message.tags}}" role="alert">
{{ message }}
</div>
{% endfor %}
{% endif %}
Código de inclusão da partial de alerta no html de algumas páginas:
{% include 'partials/_alertas.html' %}
Código das views dos usuários:
from django.shortcuts import get_object_or_404, redirect, render
from django.contrib.auth.models import User
from django.contrib import auth, messages
from receitas.models import Receita
def cadastro(request):
if request.method == 'POST':
nome = request.POST['nome']
email = request.POST['email']
senha = request.POST['password']
senha2 = request.POST['password2']
if not nome.strip():
print('nome em branco')
messages.error(request, 'O campo nome não pode ficar em branco')
return redirect('cadastro')
if not email.strip():
print('email em branco')
messages.error(request, 'O campo email não pode ficar em branco')
return redirect('cadastro')
if senha != senha2:
messages.error(request, 'As senhas digitadas não são iguais')
print('senhas diferentes')
return redirect('cadastro')
if User.objects.filter(email=email).exists():
messages.error(request, 'Usuário já cadastrado com esse email')
return redirect('cadastro')
user = User.objects.create_user(
username=nome, email=email, password=senha2)
user.save()
messages.success(request, 'Cadastro realizado com sucesso')
return redirect('login')
else:
return render(request, 'usuarios/cadastro.html')
def login(request):
if request.method == 'POST':
email = request.POST['email']
senha = request.POST['senha']
if email == "" or senha == "":
print('Os campos de email e senha não podem ficar em branco')
return redirect('login')
if User.objects.filter(email=email).exists():
nome = User.objects.filter(email=email).values_list(
'username', flat=True).get()
user = auth.authenticate(request, username=nome, password=senha)
if user is not None:
auth.login(request, user)
print('login realizado com sucesso')
return redirect('dashboard')
return render(request, 'usuarios/login.html')
def dashboard(request):
if request.user.is_authenticated:
id = request.user.id
receitas = Receita.objects.order_by('-date_receita').filter(pessoa=id)
dados = {
'receitas': receitas
}
return render(request, 'usuarios/dashboard.html', dados)
else:
return redirect('index')
def logout(request):
auth.logout(request)
return redirect('index')
def cria_receita(request):
if request.method == 'POST':
nome_receita = request.POST['nome_receita']
ingredientes = request.POST['ingredientes']
modo_preparo = request.POST['modo_preparo']
tempo_preparo = request.POST['tempo_preparo']
rendimento = request.POST['rendimento']
categoria = request.POST['categoria']
foto_receita = request.FILES['foto_receita']
user = get_object_or_404(User, pk=request.user.id)
receita = Receita.objects.create(pessoa=user, nome_receita=nome_receita, ingredientes=ingredientes, modo_preparo=modo_preparo,
tempo_preparo=tempo_preparo, rendimento=rendimento, categoria=categoria, foto_receita=foto_receita)
receita.save()
return redirect('dashboard')
else:
return render(request, 'usuarios/cria_receita.html')
Código do settings:
# Messages
from django.contrib.messages import constants as messages
MESSAGE_TAGS = {
messages.ERROR: 'danger',
messages.SUCCESS: 'success',
}
Quando há algum erro, a página é recarrecaga e a mensagem não aparece. Quando não há erro o cadastro acontece normalmente, mas também sem a mensagem de sucesso. Muito obrigado!