django中的auth模块

auth模块通俗来讲 就是django内部所给你提供auth_user表,这可以联系到 登录 注册 注销等功能,

在auth模块下的一套体系,都有自己的方式来提供装饰器,以及校验数据等 且较为方便

校验用户数据是否匹配,

登录功能

from django.contrib import auth

user = auth.authenticate(username=username,password=password)
#所得到的返回值是对象
if user:
  auth.login(request,user)#用户比对成功记录用户状态
else:
  return HttpResponse("error")

auth模块所带的装饰器

from django.contrib.auth.decorators import  login_required
#导入登录验证装饰器

#用法
@login_required
#默认如果未登录是跳转/account/login/并且后面会携带next参数记录从哪个页面跳转过来的
#全局设置跳转页面 在settings.py中
LOGIN_URL = '/xxx/'
#局部设置跳转
@login_required(login_url='/xxx/')

修改用户数据功能

#登录功能所记录的用户状态和校验的用户对象可以在request中任意调用

is_right=request.user.check_password(old_password)#校验原密码是否正确
if is_right: #如果正确设置新的
    request.user.set_password(new_password)
   request.user.save() #这步不能遗漏否则相当于没有改密码
#重要事情说三遍
#重要事情说三遍
#重要事情说三遍
else:
    return HttpResponse("原密码不正确")

注销功能

from django.contrib.auth import logout

#在函数中使用一句即可删去已经登录的用户的用户状态也就是session表
logout(request)
return redirect('/xxx/')#注销用户状态后跳转到其他页面

注册功能

from django.contrib.auth.models import User#拿到auth_user表

#满足条件操作即可

#在之前有一大堆的数据读取功能 如 用户名 密码等等
#第一种 密码用明文 基本不用 根本不安全
User.objects.create(username=username,password=password)
#第二种 建立普通用户
User.objects.create_user((username=username,password=password)
#第三种 建立超级用户也就是管理员 一般不会暴露在视图函数中通常是通过终端自己创管理员用户也一般不用 牢记第二种即可
User.objects.create_superuser((username=username,password=password)

那么接下来想要扩展auth_user表怎么办

第一种方法 建立一对一的外键 可以相当于扩展关系表

第二种方法继承 建立一个类 继承即可

from django.contrib.auth.models import AbstractUser,User

class UserInfo(AbstractUser):
      phone = models.IntegerFiled()#正常建立键即可
#注意事项
#在settings文件要配置
AUTH_USER_MODEL = 'app01.类名即可(别加models)'
#在未执行书库迁移命令之前 也就是auth_user表未创立之前

总结 这些代码的本质都是在操作表格 

从逻辑上理清楚所要操作表格的思路这样才方便的知道自己解决问题的思路  !!! 

 

posted @ 2021-06-03 10:10  不想拖累他人  阅读(82)  评论(0)    收藏  举报