Autenticação
Implementando o login
O Django já possui um app responsável pela autenticação de usuários. Inclusive, já utilizamos esse app para criar o usuário administrador, que usamos para criar anotações pelo Django Admin. Ele está listado nos INSTALLED_APPS (no arquivo getit/settings.py): 'django.contrib.auth'. Esse app já possui um modelo de usuário (além de outros, como permissões e grupos de usuários) e uma série de funcionalidades para aumentar a segurança do processo de autenticação.
Nosso objetivo agora é criar uma página de login, que utilize a infraestrutura existente do app 'django.contrib.auth', mas com o nosso próprio template (HTML) e estilo (CSS). Você pode consultar a documentação das views de autenticação do Django aqui para mais detalhes.
Configurando os padrões de URL#
O app 'django.contrib.auth' tem seus próprios padrões de urls e views já implementados. Para utilizá-los, podemos incluir o arquivo urls.py desse app no nosso arquivo de urls.
Exercício 1
Ao incluir os padrões do app de autenticação, todo o trabalho dos arquivos urls.py, views.py e models.py já está incluso. O que precisamos fazer é definir os templates.
Definindo o template de login#
De acordo com a documentação, o nome do arquivo de template da view de login é registration/login.html. Seguindo na documentação, vemos que o dicionário de contexto desse template contém 4 variáveis, das quais precisamos por enquanto apenas de uma: form, que já possui os dados do formulário de login. Na sequência, há um exemplo de template. No exercício abaixo, simplificamos e traduzimos o template para o mínimo necessário.
Exercício 2
Já conseguimos fazer o login, mas ocorreu um erro, pois o login redireciona para a URL http://localhost:8000/accounts/profile/. Na documentação vemos que existe uma configuração LOGIN_REDIRECT_URL para definirmos para qual URL o Django deve redirecionar no caso do login ser bem sucedido.
Exercício 3
O próximo passo é mostrar a informação do usuário autenticado nas páginas.