17.8. Views em Django: Trabalhando com autenticação

Página 99

Em qualquer aplicação web, a autenticação é um elemento crucial. O Django, um framework de desenvolvimento web em Python, oferece um sistema de autenticação robusto e flexível, que permite aos desenvolvedores implementar funcionalidades de autenticação sem ter que começar do zero. Neste capítulo, vamos explorar como trabalhar com autenticação nas views do Django.

Para começar, é importante entender que a autenticação no Django é baseada em sessões. Quando um usuário se autentica em uma aplicação Django, a framework cria uma sessão para esse usuário, que é mantida até que o usuário se desconecte. A sessão é armazenada no lado do servidor, e o cliente (geralmente um navegador web) recebe um cookie com um ID de sessão, que é enviado de volta ao servidor em cada requisição subsequente.

O Django oferece várias views pré-construídas para lidar com a autenticação, que estão no módulo django.contrib.auth.views. Essas views incluem a página de login, a página de logout, a página de alteração de senha, a página de reset de senha e a página de confirmação de email, entre outras.

Para usar essas views, você precisa primeiro configurar as URLs correspondentes em seu arquivo de URLs. Por exemplo, para configurar a URL da página de login, você poderia adicionar a seguinte linha ao seu arquivo urls.py:


from django.contrib.auth import views as auth_views

urlpatterns = [
    path('login/', auth_views.LoginView.as_view(), name='login'),
    # ...
]

Depois de configurar a URL, você pode usar a view correspondente em seus templates. Por exemplo, você poderia criar um link para a página de login em seu template base da seguinte forma:


Login

Por padrão, a view LoginView usa um template chamado registration/login.html. Se você quiser usar um template diferente, pode especificá-lo na chamada para as_view(). Por exemplo:


path('login/', auth_views.LoginView.as_view(template_name='myapp/login.html'), name='login'),

Além das views de autenticação pré-construídas, o Django também oferece a possibilidade de criar suas próprias views de autenticação. Para isso, você pode usar a função authenticate(), que verifica se as credenciais fornecidas por um usuário são válidas. Se as credenciais forem válidas, authenticate() retorna um objeto User; caso contrário, retorna None.

Uma vez que você tenha um objeto User, pode usá-lo para iniciar uma sessão para o usuário com a função login(). Por exemplo:


from django.contrib.auth import authenticate, login

def my_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)
            # Redirect to a success page.
            return redirect('home')
        else:
            # Return an 'invalid login' error message.
            return render(request, 'myapp/login.html', {'error': 'Invalid login'})
    else:
        return render(request, 'myapp/login.html')

Em resumo, o Django oferece uma série de ferramentas poderosas para trabalhar com autenticação em suas views. Seja usando as views pré-construídas ou criando suas próprias, você pode implementar um sistema de autenticação robusto e seguro com relativa facilidade.

Répondez maintenant à l’exercice sur le contenu :

Qual é a função do Django no desenvolvimento de autenticação web?

Tu as raison! Félicitations, passez maintenant à la page suivante

Vous avez raté! Essayer à nouveau.

Page suivante de lebook gratuit :

10017.9. Views em Django: Criando APIs com Django Rest Framework

Obtenez votre certificat pour ce cours gratuitement ! en téléchargeant lapplication Cursa et en lisant lebook qui sy trouve. Disponible sur Google Play ou App Store !

Get it on Google Play Get it on App Store

+ 6,5 millions
d'étudiants

Certificat gratuit et
valide avec QR Code

48 mille exercices
gratuits

Note de 4,8/5 dans les
magasins d'applications

Cours gratuits en
vidéo, audio et texte