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='[email protected]')  # 创建超级用户  邮箱必填

自定义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

 

转载于:https://www.cnblogs.com/xiongying4/p/11588108.html

你可能感兴趣的:(数据库,python)