中间名: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的绝对路径 (登陆成功后,会重定向到该路径).



