auth模块的功能

Auth模块:

若是你想用auth模块   那么你就用全套数据库

createsuperuser  建立超级用户 这个超级用户就能够拥有登录django admin后台管理的权限django

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

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

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表

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

第二种:   使用类的继承ui

必定要在配置文件中 告诉djangourl

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

在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

相关文章
相关标签/搜索