内容概要
-
用户认证模块auth
-
auth模块补充
-
auth_user表扩展字段
内容详细
auth模块
主要是用来做用户相关的功能 注册 登录 验证 修改密码 注销 访问admin需要管理员账号 该账号数据均来源于数据库迁移之后生成的auth_user表 如何创建admin管理员账号 createsuperuser
具体操作
from django.contrib import auth # 校验用户名密码是否正确 auth.authenticate(request,username=username,password=password) # 保存用户状态 auth.login(request,user_obj) # 查看用户是否登录 request.user.is_authenticated() # 获取用户对象 request.user # 校验原密码是否正确 request.user.check_password() # 修改密码 request.user.set_password() request.user.save() # 校验是否登录装饰器 from django.contrib.auth.decorators import login_required """ 跳转全局配置 LOGIN_URL = '/lg/' 跳转局部配置 @login_required(login_url='/lg/') """
auth模块补充
1.用户注册 from django.contrib.auth.models import AbstractUser,User # 操作auth_user写入数据不能使用create方法 密码不会自动加密 # User.objects.create(username=username,password=password,email=email) # 创建普通用户 User.objects.create_user(username=username,password=password,email=email) # 创建超级用户 User.objects.create_superuser(username=username, password=password, email=email) 2.用户注销 auth.logout(request)
auth模块用户表扩展字段
在auth_user表的基础之上还想增加额外的字段 并且还可以使用auth模块所有的功能 # 配合文件配置 # 告诉django使用我们自己定义的表来取代auth_user表 AUTH_USER_MODEL = 'app01.Userinfo' # 应用名.表名 # 一对一表关联(了解) # 面向对象继承(掌握) from django.contrib.auth.models import AbstractUser class Userinfo(AbstractUser): # 扩展AbstractUser表中没有的字段 phone = models.BigIntegerField() info = models.CharField(max_length=255)
小结
1:校验用户名与密码 auth.authenticate(username=username, ...) 2:保存用户信息 auth.login(request, user_obj) 3:判断用户是否登录 request.user.is_authenticated() 4:装饰器 form django.contrib.auth.decorators import login_required 局部:@login_required(login_url='/login/') (灵活) 全局:配置--->LOGIN_URL = '/login/' (省事) 5:验证原密码(修改密码) request.user.check_password(原密码) 6:修改密码(两步) request.user.set_password(新密码) request.user.save() 7:创建用户 命令行创建:createsupperuser(超级用户)(管理一般不会使用逻辑代码创建) from django.contrib.auth.models import User User.objexts.create()(创建的用户密码是明文)(不推荐) User.objexts.create_user()(普通用户)