一 导入auth模块
from django.contrib.auth.models import User
from django.contrib import auth
auth模块的操作针对的就是auth_user表
二 auth模块的方法
1 authenticate() 用户验证函数。验证成功,返回一个名称为用户登录名的User对象,这个对象可以调用auth_user表中的属性。验证失败,返回None。
def login(request): if request.method==‘POST‘: username=request.POST.get(‘username‘) password=request.POST.get(‘password‘) user=auth.authenticate(username=username,password=password) print(user,type(user)) return render(request,‘login.html‘) return render(request,‘login.html‘)
输出:
zuo <class ‘django.contrib.auth.models.User‘>
2 login(request,user) 记录session功能
user=auth.authenticate(username=username,password=password) if user: auth.login(request,user) return redirect(‘/index/‘)
3 logout(request) 注销
核心 代码 request.session.flush()
auth.logout(request)
PS request.user。获取当前登录的用户,返回值是一个对象。 用在index页面。确定当前是否有用户登录。如果不是匿名,说明login登录成功。如果是匿名,说明login登录不成功,跳转login页面。
一个AUTH_USER_MODEL 类型的对象,表示当前登录的用户。如果用户当前没有登录,user 将设置为django.contrib.auth.models.AnonymousUser 的一个实例。你可以通过is_authenticated() 区分它们。
user 只有当Django 启用AuthenticationMiddleware 中间件时才可用。
没有用户时:
def index(request): username=request.user print(username,type(username))
输出:
AnonymousUser <class ‘django.utils.functional.SimpleLazyObject‘>
有用户时:
输出
zuo <class ‘django.utils.functional.SimpleLazyObject‘>
三 User对象的API
1 is_authenticated() 返回布尔值,判断用户是否登录
2 创建新用户
User.objects.create_user(username=‘‘,password=‘‘)
3 修改密码
user=User.objects.get(username=‘xx‘)
user.set_password(‘新密码‘) user是对象
user.save()