关键词

Django用户身份验证完成示例代码

关于Django用户身份验证完成示例代码,我们可以大概分为以下两个部分进行讲解:

  1. 认证机制设置

在开始编写代码前,我们需要先在Django工程下设置好认证机制。具体做法如下:

(1)在settings.py文件中找到INSTALLED_APPS(已安装应用列表)这个配置项,在其中添加django.contrib.auth模块。

(2)在settings.py文件末尾添加以下内容:

LOGIN_REDIRECT_URL = '/'
LOGOUT_REDIRECT_URL = '/'

这将使得用户在登录成功或登出成功后都默认跳转到网站首页,你可以根据实际需求进行修改。

  1. 示例代码

下面是两个示例代码,分别是用户注册和登录的示例,其中两段代码都涉及到用户身份验证的步骤。

(1)用户注册的示例代码:

from django.shortcuts import render, redirect
from django.contrib.auth.models import User
from django.contrib import auth, messages

def register(request):
    if request.method == 'POST':
        # 获取用户输入的注册信息
        username = request.POST['username']
        email = request.POST['email']
        password1 = request.POST['password1']
        password2 = request.POST['password2']

        # 校验两次输入的密码是否相同
        if password1 == password2:
            try:
                # 创建新用户
                user = User.objects.create_user(username, email, password1)
                user.save()
                auth.login(request, user)  # 自动登录
                messages.success(request, '注册成功')
                return redirect('/')
            except:
                messages.error(request, '注册失败,请稍后再试')
        else:
            messages.error(request, '两次输入的密码不相同')
    return render(request, 'register.html')

在这段示例代码中,我们创建了一个register函数来处理用户注册的相关请求。在用户POST提交了注册信息之后,我们首先获取到用户在表单中填写的相关信息,然后校验两次输入的密码是否相同(password1 == password2)。如果校验通过,我们使用Django的内置User模型的create_user方法来创建新用户对象,然后调用user.save()来保存到数据库中。接着,我们调用auth.login(request, user)自动登录该新用户,同时使用messages.success()向用户反馈一个注册成功的消息,并跳转到首页。如果出现异常,则调用messages.error()向用户提示注册失败的消息。如果两次输入的密码不相同,则会调用messages.error()提示用户密码不匹配。

(2)用户登录的示例代码:

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

def user_login(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)
            messages.success(request, '登录成功')
            return redirect('/')
        else:
            messages.error(request, '用户名或密码错误')
    return render(request, 'login.html')

在这段示例代码中,我们创建了一个user_login函数来处理用户登录请求。在用户POST提交了登录信息之后,我们首先获取到用户在表单中填写的相关信息,然后使用Django的内置authenticate方法来校验用户输入的用户名和密码,如果校验通过,我们再调用login方法将用户信息保存到请求对应的session中,同时使用messages.success()向用户反馈一个登录成功的消息,并跳转到首页。如果用户名或密码错误,则会调用messages.error()向用户提示登录失败的消息。

以上就是示例代码的完整攻略,希望对你有帮助。

本文链接:http://task.lmcjl.com/news/4054.html

展开阅读全文