17.8. Views in Django: Working with Authentication

Página 99

In any web application, authentication is a crucial element. Django, a Python web development framework, offers a robust and flexible authentication system that allows developers to implement authentication functionality without having to start from scratch. In this chapter, we'll explore how to work with authentication in Django views.

To begin with, it's important to understand that authentication in Django is session-based. When a user logs in to a Django application, the framework creates a session for that user, which is maintained until the user logs out. The session is stored on the server side, and the client (usually a web browser) receives a cookie with a session ID, which is sent back to the server on each subsequent request.

Django provides several prebuilt views to handle authentication, which are in the django.contrib.auth.views module. These views include the login page, logout page, change password page, password reset page, and email confirmation page, among others.

To use these views, you first need to configure the corresponding URLs in your URLs file. For example, to configure the login page URL, you could add the following line to your urls.py:


from django.contrib.auth import views as auth_views

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

After setting the URL, you can use the corresponding view in your templates. For example, you could link to the login page in your base template like this:


Login

By default, the LoginView view uses a template called registration/login.html. If you want to use a different template, you can specify it in the call to as_view(). For example:


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

In addition to the prebuilt authentication views, Django also provides the ability to create your own authentication views. For this, you can use the authenticate() function, which checks whether the credentials provided by a user are valid. If the credentials are valid, authenticate() returns a User object; otherwise, it returns None.

Once you have a User object, you can use it to start a session for the user with the login() function. For example:


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')

In summary, Django offers a number of powerful tools for working with authentication in your views. Whether using the pre-built views or creating your own, you can implement a robust and secure authentication system with relative ease.

Now answer the exercise about the content:

What is Django's role in web authentication development?

You are right! Congratulations, now go to the next page

You missed! Try again.

Next page of the Free Ebook:

10017.9. Views in Django: Creating APIs with Django Rest Framework

Earn your Certificate for this Course for Free! by downloading the Cursa app and reading the ebook there. Available on Google Play or App Store!

Get it on Google Play Get it on App Store

+ 6.5 million
students

Free and Valid
Certificate with QR Code

48 thousand free
exercises

4.8/5 rating in
app stores

Free courses in
video, audio and text