django的通过set_password注册密码加密,解密
这个是因为我正好回顾时遇到这个问题,网上也找不到,试了很久终于解决出来
一、加密
1、
这个问题首先要用到django自带的AbstractUser,即首先在你的用户模块models里面导入AbstractUser
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
pass
2、
既然上面用到了AbstractUser,那么我们就要在setting里面写一个声明
# 声明使用的是django自带的认证系统
AUTH_USER_MODEL = 'register.User'
我是由于把setting.py放在了自定义settings文件夹中,并改了个名为dev,你们不用管,直接就写在setting中就可以了
3、
接着在串行器中重写方法,因为validated在上一个def validate里已经整理好了,所以直接保存就可以了
user = super().create(validated_data)
user.set_password(validated_data['password'])
user.save()
4、
运行成功后,打开数据库查看,他就已经是加密状态的了
二、解密
解密其实就更简单了
1、
首先导入一个check_password包
from django.contrib.auth.hashers import check_password
2、
接着
pwd_bool = check_password(password,pwd)
前面一个’password’是判断是否等于后面的’pwd’。如果相等,就返回一个True;不相等,就返回False。
它只会返回一个布尔值。