Nessa aula nós vamos criar o sistema de login, cadastro, alteração e exclusão de aulas.

Primeiro vamos direcionar os dados de login.html para uma URL:

<form method="POST" action="{% url 'valida_login'%}">{% csrf_token %}

Vamos criar a respectiva URL.

path('valida_login/', views.valida_login, name = 'valida_login'),

Criando a função valida_login.

def valida_login(request):
    email = request.POST.get('email')
    senha = request.POST.get('senha')
    senha = hashlib.sha256(senha.encode()).hexdigest()
    usuarios = Usuario.objects.filter(email = email).filter(senha = senha)

    if len(usuarios) == 0:
        return redirect('/auth/login/?status=1')
    elif len(usuarios) > 0:
        request.session['usuario'] = usuarios[0].id
        return redirect('/home/')

Prepare a view para receber o parâmetro enviado por GET.

def login(request):
    status = request.GET.get('status')
    return render(request, 'login.html', {'status': status})

Não vamos esquecer dos avisos em login.html.

{% if status == '1' %}
    <div class="alert alert-danger" role="alert">
      E-mail ou senha inválido
    </div>
  {% endif %}
  {% if status == '2' %}
    <div class="alert alert-warning" role="alert">
      Faça login antes de acessar o sistema!
    </div>
  {% endif %}

Com o login realizado vamos impedir o usuário de acessar login e cadastro se já estiver logado, para isso basta acrescentar nas views:

if request.session.get('usuario'):
        return redirect('/home/')

Vamos criar uma URL para o logout.

path('sair/', views.sair, name = 'sair'),

Crie a view.

def sair(request):
    request.session.flush()
    return redirect('/auth/login/')