中间名:django.contrib.auth
所在位置:项目目录下的settings.py
注册用户(普通用户):
from django.contrib.auth.models import User #所在库
new_user = User.objects.create_user(username=username,password=password)
new_user.save()
注:调用自带中间件前,需先进行数据迁移,迁移完成后,会在数据库中生成多个中间件所需库,例:auth_user 库,为用于存放用户信息的库
数据迁移:python manage.py makemigrations
python manage.py migrate
项目目录中与manage.py同级,进入cmd使用
用户信息库如下,存放时会对密码字段会进行加密,为中间件方法实现,此不对其算法多做解释
登录:
from django.contrib import auth
user = auth.authenticate(username=username, password=password)
auth.login(request, user)
auth.authenticate会对用户名及密码进行校验,并返回一个认证了的user对象
利用auth.login进行登录,可理解为注册cookie
注销用户(退出登录):
auth.logout(request)
无返回值,作用为清除登录信息的cookie
一般在views视图使用后重定向至登录界面,如下:
修改密码:
user = User.objects.get(username=username)
ret = user.check_password(oldpassword) #检查密码是否正确
if ret:
user.set_password(newpassword) #如果正确就给设置一个新密码
user.save() #保存
注:区分大小写 User 和 user
User.objects.get 用于获取对应用户名的对象
user.check_password 用于校验密码 (用户输入修改前密码及新密码,应对输入的旧密码进行校验)
user.set_password(newpassword) 为该用户设置一个新密码
用户认证:
user = request.user
获取cookie中的用户信息,访问页面时可用来校验用户是否登录
可在views视图中传参至html,结合html 中 {% if user.username %}
在用户非登录时不显示某些信息,或显示提示登录信息。
例:
当页面必须用户登录才能查看时,可利用django为我们设计好的一个用于此种情况的装饰器:login_requierd()
@login_required
def my_view(request):
...
若用户没有登录,则会跳转到django默认的 登录URL '/accounts/login/ ’ (这个值可以在settings文件中通过LOGIN_URL进行修改)。并传递 当前访问url的绝对路径 (登陆成功后,会重定向到该路径).