关于Django用户身份验证完成示例代码,我们可以大概分为以下两个部分进行讲解:
- 认证机制设置
在开始编写代码前,我们需要先在Django工程下设置好认证机制。具体做法如下:
(1)在settings.py
文件中找到INSTALLED_APPS
(已安装应用列表)这个配置项,在其中添加django.contrib.auth
模块。
(2)在settings.py
文件末尾添加以下内容:
LOGIN_REDIRECT_URL = '/'
LOGOUT_REDIRECT_URL = '/'
这将使得用户在登录成功或登出成功后都默认跳转到网站首页,你可以根据实际需求进行修改。
- 示例代码
下面是两个示例代码,分别是用户注册和登录的示例,其中两段代码都涉及到用户身份验证的步骤。
(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()
向用户提示登录失败的消息。
以上就是示例代码的完整攻略,希望对你有帮助。
本文链接:https://my.lmcjl.com/post/19230.html
4 评论