from bbc_auto import settings
# setting中有默认的随机生成的言
import hashlib
def md5(data_string):
# salt = "xxxxx" # 因为加密方式是固定的,所以加个言
# obj = hashlib.md5(salt.encode("utf-8"))
obj = hashlib.md5(settings.SECRET_KEY.encode("utf-8"))
obj.update(data_string.encode("utf-8"))
return obj.hexdigest()
视图函数调用
from app01.utils.encrypt import md5
class AdminModelForm(BootStrapModelForm):
# 添加一个确认密码的输入框,这个字段在数据库中是没有的
confirm_password = forms.CharField(label="确认密码",
# render_value=True:点击确认后不清空密码
widget=forms.PasswordInput(render_value=True), # render_value=True 定义密码保密显示
)
class Meta:
model = models.Admin
fields = ["username", "password", "confirm_password"]
widgets = {
"password": forms.PasswordInput(render_value=True)
}
def clean_password(self): # 获取密码加密
pwd = self.cleaned_data.get("password")
return md5(pwd)
def clean_confirm_password(self): # 钩子方法: 获取密码和确认密码
# print(self.cleaned_data) # (self.cleaned_data) # 验证通过后,里面所有的内容
pwd = self.cleaned_data.get("password") # 此时获取的pwd就是加完秘的
confirm = md5(self.cleaned_data.get("confirm_password"))
if confirm != pwd:
raise ValidationError("密码不一致")
return confirm # return 返回的什么保存到数据库的值就是什么