Estou projetando (para fins de apredizado) a parte de Cadastro e Login do meu sistema, a parte de cadastro aparentemente está tudo bem, o problema é com o Login. Criei Algumas mensagens para aparecer na tela como:
“user@exemplo.com agora está Logado” ou “Erro ao efetuar Login.”
Obs: A mensagem fica no cabeçalho do site.
O problema é que sempre que clico no botão de Login depois de inserir as credenciais ele mostra “Erro ao efetuar Login”. Estou a horas tentando resolver este problema, alguém pode me dar uma força?
Irei mostrar dos meus arquivos views.py forms.py urls.py Caso alguém queira ver o repositório completo no meu github aqui está: Link do Repositório
views.py
def login(request):
form = LoginForms()
if request.method == 'POST':
form = LoginForms(request.POST)
if form.is_valid():
email_login = form['email_login'].value()
senha = form['senha'].value()
usuario = auth.authenticate(
request,
email=email_login,
password=senha
)
if usuario is not None:
auth.login(request, usuario)
messages.success(request, f"{email_login} agora está logado.")
return redirect('index')
else:
messages.error(request, "Erro ao efetuar Login.")
return redirect('login')
return render(request, "usuarios/login.html", {"form": form})
def cadastro(request):
form = CadastroForms()
if request.method == 'POST':
form = CadastroForms(request.POST)
if form.is_valid():
nome=form["nome_cadastro"].value()
email_cadastro=form["email_cadastro"].value()
if User.objects.filter(username=nome).exists() or User.objects.filter(email=email_cadastro).exists():
print('Email ou Nome já cadastrado no sistema')
messages.error(request, 'Email ou Nome já cadastrado no sistema')
return redirect('cadastro')
senha = random.sample(range(10),6)
# concatenar(mapear(tipo,valor))
senha_aleatoria = ''.join(map(str, senha))
usuario = User.objects.create_user(
username=nome,
email=email_cadastro,
password=senha_aleatoria
)
usuario.save()
enviar_email(nome, email_cadastro, senha_aleatoria)
messages.success(request,'Cadastro efetuado com sucesso.')
return redirect('login')
return render(request,"usuarios/cadastro.html", {"form": form})
forms.py
class LoginForms(forms.Form):
email_login = forms.CharField(
label="Email",
required=True,
max_length=100,
widget=forms.TextInput(
attrs={
"class": "shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline mb-4",
"placeholder": "nome@exemplo.com"
}
)
)
senha = forms.CharField(
label="Senha",
required=True,
max_length=70,
widget=forms.PasswordInput(
attrs={
"class": "shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline mb-4",
"placeholder": "Sua Senha"
}
)
)
class CadastroForms(forms.Form):
nome_cadastro = forms.CharField(
label="Seu nome completo",
required=True,
max_length=100,
widget=forms.TextInput(
attrs={
"class": "shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline mb-4",
"placeholder": "Ex: João Silva"
}
)
)
email_cadastro = forms.CharField(
label="Seu Email",
required=True,
max_length=70,
widget=forms.EmailInput(
attrs={
"class": "shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline mb-4",
"placeholder": "nome@exemplo.com"
}
)
)
urls.py
from django.urls import path
from usuarios.views import login, cadastro
#path('caminho/', funcao, name='nome_da_rota')
urlpatterns = [
path('login', login, name='login'),
path('cadastro',cadastro,name='cadastro')
]