13.9. Criação de um projeto Django: Autenticação de usuários

Página 67

A autenticação de usuários é um aspecto crucial para qualquer aplicação web que deseja proteger certos recursos e permitir o acesso apenas a usuários autorizados. No Django, a autenticação de usuários é facilitada pela sua biblioteca de autenticação incorporada. Nesta seção, vamos explorar como criar um projeto Django que inclui autenticação de usuários.

Para começar, precisamos primeiro instalar o Django. Isso pode ser feito usando o pip, o instalador de pacotes Python. No terminal, basta executar o comando 'pip install django'. Uma vez instalado, podemos criar um novo projeto Django executando 'django-admin startproject myproject'.

Uma vez criado o projeto, precisamos criar uma nova aplicação para lidar com a autenticação de usuários. Isso pode ser feito executando 'python manage.py startapp authentication' na raiz do projeto. Isso criará uma nova pasta chamada 'authentication' com vários arquivos que serão usados para configurar a aplicação de autenticação.

Em seguida, precisamos adicionar a nova aplicação à lista de INSTALLED_APPS em settings.py. Isso permitirá que o Django reconheça a aplicação de autenticação e inclua suas funcionalidades no projeto. A lista de INSTALLED_APPS deve agora incluir 'authentication'.

Em seguida, precisamos configurar a autenticação de usuários. O Django vem com um sistema de autenticação incorporado que podemos utilizar. Para isso, precisamos adicionar a seguinte linha ao arquivo settings.py: 'AUTH_USER_MODEL = 'authentication.User'.

Isso informa ao Django para usar o modelo de usuário definido na aplicação de autenticação para todas as operações de autenticação. Agora precisamos criar esse modelo de usuário. Em models.py na aplicação de autenticação, adicione o seguinte código:

from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    pass

Isso cria um modelo de usuário que herda de AbstractUser, um modelo de usuário base que inclui campos como username, password, email, first_name, last_name, etc. Podemos adicionar campos adicionais se necessário, mas para este exemplo, vamos manter as coisas simples.

Agora, precisamos criar as views para lidar com o login e o logout. Em views.py na aplicação de autenticação, adicione o seguinte código:

from django.contrib.auth import authenticate, login, logout
from django.http import HttpResponse
from django.shortcuts import render, redirect

def login_view(request):
    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']
        user = authenticate(request, username=username, password=password)
        if user is not None:
            login(request, user)
            return redirect('home')
        else:
            return HttpResponse('Invalid credentials')
    else:
        return render(request, 'authentication/login.html')

def logout_view(request):
    logout(request)
    return redirect('login')

Estas views lidam com o login e o logout, respectivamente. A view de login verifica se o método de requisição é POST. Se for, tenta autenticar o usuário com o username e password fornecidos. Se a autenticação for bem-sucedida, o usuário é logado e redirecionado para a página inicial. Se a autenticação falhar, uma resposta HTTP com a mensagem 'Invalid credentials' é retornada. Se o método de requisição não for POST, a página de login é renderizada.

A view de logout simplesmente faz logout do usuário e redireciona para a página de login.

Agora, precisamos criar as templates para o login. Crie uma nova pasta chamada 'templates' na pasta da aplicação de autenticação e, dentro dela, crie uma nova pasta chamada 'authentication'. Dentro desta pasta, crie um novo arquivo chamado 'login.html' e adicione o seguinte código:

{% extends 'base_generic.html' %}

{% block content %}
  

Login

{% csrf_token %} Username:
Password:
{% endblock %}

Esta é uma template simples de login que estende a template base_generic.html e substitui o bloco de conteúdo com um formulário de login.

Finalmente, precisamos adicionar as URLs para as views de login e logout. Em urls.py na aplicação de autenticação, adicione o seguinte código:

from django.urls import path
from . import views

urlpatterns = [
    path('login/', views.login_view, name='login'),
    path('logout/', views.logout_view, name='logout'),
]

Isso adiciona as URLs para as views de login e logout, respectivamente. Agora, se executarmos o servidor de desenvolvimento Django com 'python manage.py runserver' e navegarmos para 'http://localhost:8000/login', deveríamos ver a página de login e ser capazes de logar com um usuário existente.

Em resumo, a autenticação de usuários é uma parte importante de qualquer aplicação web e o Django facilita a implementação dessa funcionalidade. Com o sistema de autenticação incorporado do Django, podemos facilmente proteger recursos e permitir o acesso apenas a usuários autorizados.

Ahora responde el ejercicio sobre el contenido:

Qual é o processo para configurar a autenticação de usuários em um projeto Django?

¡Tienes razón! Felicitaciones, ahora pasa a la página siguiente.

¡Tú error! Inténtalo de nuevo.

Siguiente página del libro electrónico gratuito:

6813.10. Criação de um projeto Django: Autorização e permissões

¡Obtén tu certificado para este curso gratis! descargando la aplicación Cursa y leyendo el libro electrónico allí. ¡Disponible en Google Play o App Store!

Disponible en Google Play Disponible en App Store

+ 6,5 millones
estudiantes

Certificado gratuito y
válido con código QR

48 mil ejercicios
gratis

Calificación de 4.8/5
en tiendas de aplicaciones

Cursos gratuitos de
vídeo, audio y texto.