Django之auth

一:auth基础#

(1)作用:django提供给开发人员 对用户进行操作的模块的

例如:登录 注册 认证 注销等等

(2)使用方式

from django.contrib import auth

二:方法介绍#

(1)authenticate()#

  (1)提供了用户认证功能

  (2)如果认证成功会返回一个用户对象

<p>用户名称:<input type="text" name="username"></p>
<p>用户密码:<input type="text" name="password"></p>
<input type="submit">
复制代码
from django.contrib import auth
def user(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
      user_obj = auth.authenticate(username=username,password=password)
return render(request,'user.html')
复制代码

user_obj = auth.authenticate(username=username,password=password)
        print(user_obj)   # admin 对象
        print(user_obj.username)  # admin
        print(user_obj.password) # pbkdf2_sha256$36000$qVMoNB0niRMM$Z+32NPaCez7yHBcLokJq+KSzmkdv3vetY+tFvhGCrC8= 密码

(2)login(HttpRequest, user)

  (1)接受前端输入的数据

  (2)给前端用户设置session值

        auth.login(request,user_obj)

PS:

  (1)只要执行此代码 就可以再任意位置获取用户对象

  (2)如果用户对象不存在 会返回一个匿名对象

(3)is_authenticated#

  (1)查看对象是否登录

  (2)如果登录返回true 反之返回false

request.user.is_authenticated

(4)check_password#

  (1)检验密码是否正确

  (2)其会将用户输入的密码自动进行加密 与后端数据库进行比较

request.user.check_password(密码)

(5)set_password#

  (1)将原有的密码进行更改

  (2)进行更改之后一定要执行save命令

request.user.set_password(new_password)
request.user.save() 

(6)auth.logout(request) #

  (1)将数据库与浏览器中的数据都会清除

  (2)类似于request.session.flush

auth.logout(request) 

(7)login_requied

from django.contrib.auth.decorators import  login_required
@login_required(login_url='/xxx/')  # 局部配置
def index(request):
    pass

PS:

  (1)如果不指定login_url参数 如果用户没有登录会跳转到一个奇怪的页面

  (2)指定可以跳转到指定页面

# 全局配置  settings文件中
LOGIN_URL = '/xxx/'

(8)创建用户

# 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表格#

复制代码
from django.contrib.auth.models import AbstractUser


# 使用类的继承 class Userinfo(AbstractUser): # 千万不要跟原来表中的字段重复 只能创新 phone = models.BigIntegerField() avatar = models.CharField(max_length=32) # 一定要在配置文件中 告诉django # 告诉django orm不再使用auth默认的表 而是使用你自定义的表 AUTH_USER_MODEL = 'app01.Userinfo' # '应用名.类名'
复制代码

PS:

  (1)执行数据库迁移命令
  (2)所有的auth模块功能 全部都基于你创建的表
  (3)而不再使用auth_user

 

posted @   SR丶  阅读(234)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示
CONTENTS