06-md5封装

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 返回的什么保存到数据库的值就是什么

你可能感兴趣的:(Django,数据库)