Django Authentication (Auth) Component
The Django Authentication (Auth) component is typically used for user login and registration, to determine if the current user is legitimate, and to redirect to the success or failure login page.
The Django Authentication (Auth) component requires importing the auth module:
# Authentication module
from django.contrib import auth
# Corresponding database
from django.contrib.auth.models import User
The return value is a user object.
Three methods to create a user object:
- create(): Creates a regular user with a plaintext password.
- create_user(): Creates a regular user with a hashed password.
- create_superuser(): Creates a superuser with a hashed password, and requires an additional email parameter.
Parameters:
- username: User name.
- password: Password.
- email: Email (create_superuser method requires an additional email).
from django.contrib.auth.models import User User.objects.create(username='runboo', password='123')
from django.contrib.auth.models import User
User.objects.create_user(username='runbooo', password='123')
from django.contrib.auth.models import User
User.objects.create_superuser(username='runboooo', password='123', email='[email protected]')
To verify a user's username and password, use the authenticate() method, which filters the user object from the auth_user table.
Import required:
from django.contrib import auth
Parameters:
- username: User name
- password: Password
Return value: If the verification is successful, it returns the user object; otherwise, it returns None.
Example
def login(request):
if request.method == "GET":
return render(request, "login.html")
username = request.POST.get("username")
password = request.POST.get("pwd")
valid_num = request.POST.get("valid_num")
keep_str = request.session.get("keep_str")
if keep_str.upper() == valid_num.upper():
user_obj = auth.authenticate(username=username, password=password)
print(user_obj.username)
For a successfully verified user, add a session and set request.user to the user object.
Import required:
from django.contrib import auth
Parameters:
- request: User object
Return value: None
Example
def login(request):
if request.method == "GET":
return render(request, "login.html")
username = request.POST.get("username")
password = request.POST.get("pwd")
valid_num = request.POST.get("valid_num")
keep_str = request.session.get("keep_str")
if keep_str.upper() == valid_num.upper():
user_obj = auth.authenticate(username=username, password=password)
print(user_obj.username)
if not user_obj:
return redirect("/login/")
else:
auth.login(request, user_obj)
path = request.GET.get("next") or "/index/"
print(path)
return redirect(path)
else:
return redirect("/login/")