• auth模块的功能


    Auth模块:

    如果你想用auth模块   那么你就用全套

    createsuperuser  创建超级用户 这个超级用户就可以拥有登陆django admin后台管理的权限

    Auth模块是Django自带的用户认证模块:

    我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统。此时我们需要实现包括用户注册、用户登录、用户认证、注销、修改密码等功能,这还真是个麻烦的事情呢。

    Django作为一个完美主义者的终极框架,当然也会想到用户的这些痛点。它内置了强大的用户认证系统--auth,它默认使用 auth_user 表来存储用户数据。

    跟用户相关的功能模块
                    用户的注册 登陆 验证 修改密码 ...
                
                执行数据库迁移命令之后  会生成很多表  其中的auth_user是一张用户相关的表格
                添加数据
                    createsuperuser  创建超级用户 这个超级用户就可以拥有登陆django admin后台管理的权限

    Auth模块常用方法

    from django.contrib import auth

    查询用户

    from django.contrib import auth
    user_obj = auth.authenticate(username=username,password=password  # 必须要用 因为数据库中的密码字段是密文的 而你获取的用户输入的是明文

    记录用户状态

    auth.login(request,user_obj)  # 将用户状态记录到session中

    判断用户是否登录

    print(request.user.is_authenticated)  # 判断用户是否登录  如果是你们用户会返回False

    用户登录之后 获取用户对象

    print(request.user)  # 如果没有执行auth.login那么拿到的是匿名用户

    校验用户是否登录

    from django.contrib.auth.decorators import  login_required
    
    @login_required(login_url='/xxx/')  # 局部配置
    
    def index(request)
    
        pass
    
    # 全局配置  settings文件中
    
    LOGIN_URL = '/xxx/'

    验证密码是否正确

    request.user.check_password(old_password)

    修改密码

    request.user.set_password(new_password)
    
    request.user.save()  # 修改密码的时候 一定要save保存 否则无法生效

    退出登陆

    auth.logout(request)  # request.session.flush()

    注册用户

    User.objects.create(username =username,password=password)  # 创建用户名的时候 千万不要再使用create 了
    
    User.objects.create_user(username =username,password=password)  # 创建普通用户
    
    User.objects.create_superuser(username =username,password=password,email='123@qq.com')  # 创建超级用户  邮箱必填

    自定义auth_user表

    第一种 :使用一对一关系  不考虑

    第二种:   使用类的继承

    一定要在配置文件中 告诉django

     告诉django  orm不再使用auth默认的表  而是使用你自定义的表

    在setting.py文件中配置

    AUTH_USER_MODEL = 'app01.Userinfo'  # '应用名.类名'

    使用类继承

    
    
    from django.contrib.auth.models import AbstractUser
    class Userinfo(AbstractUser):
    
    # 千万不要跟原来表中的字段重复 只能创新
    
    phone = models.BigIntegerField()
    
    avatar = models.CharField(max_length=32)

    最后执行数据库迁移命令

    所有的auth模块功能 全部都基于你创建的表,而不再使用auth_user

  • 相关阅读:
    SQLPLUS使用及Oracle表空间设定自动扩展
    3.21 Go之多核并行化
    3.21 Go之锁(二)
    3.12 Go之通道关闭后继续使用
    3.12 Go之并发打印(借助通道实现)
    3.11 Go之RPC(模拟远程调用过程)
    3.23 Go之反射
    3.22 Go之等待组
    3.21 Go之锁(一)
    3.22 Go之CSP:通信顺序进程
  • 原文地址:https://www.cnblogs.com/xiongying4/p/11588108.html
Copyright © 2020-2023  润新知