11:Django基础之auth模块

Posted Roger`C

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了11:Django基础之auth模块相关的知识,希望对你有一定的参考价值。

内容概要

  • 用户认证模块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()(普通用户)

 

 

 

以上是关于11:Django基础之auth模块的主要内容,如果未能解决你的问题,请参考以下文章

Django基础十一之认证系统

15.Django基础十一之认证系统

Django之auth

Django 之 auth 模块

Django之Auth模块

Django之auth模块用户认证模块