一、场景

我们在使用admin后台管理用户的时候需要对用户信息进行一个特殊处理,如加密用户的密码。这个时候我们就需要定义一个方法完成数据字段的加密。

二、方法

我们在model中重载save的方法,来对密码字段进行加密处理

代码:

class User(models.Model):
    userid = models.AutoField(db_column='userId', primary_key=True, verbose_name="用户ID")  # Field name made lowercase.
    username = models.CharField(db_column='userName', max_length=255, blank=True, null=True, verbose_name="用户名")  # Field name made lowercase.
    password = models.CharField(max_length=255, blank=True, null=True)
    gender = models.IntegerField(blank=True, null=True, verbose_name="性别", choices=((1, ''), (0, '')))
    mail = models.CharField(max_length=45, blank=True, null=True, verbose_name="邮件")
    picurl = models.CharField(db_column='picUrl', max_length=255, blank=True, null=True, default="xxx.png")  # Field name made lowercase.
    
    # 重新方法完成数据字段加密
    # 引入hashlib的包
    def save(self, *args, **kwargs):
        md5 = hashlib.md5()
    # 加密的字段
        md5.update(self.password.encode())
        self.password = md5.hexdigest()
        super(User, self).save(*args, **kwargs)

    class Meta:
        # managed = False
        verbose_name = "用户管理表"
        verbose_name_plural = verbose_name
        db_table = 'user'

结果

 

三、总结

通过上面的方法就可以实现数据字段的加密,值得注意的是,由于现实的字段是加密之后的字段,如果在没有修改的情况下继续点击保存就会对加密的数据在加密,因此查看完数据之后不能直接点保存。

参考:

https://blog.csdn.net/qq_33036061/article/details/107927193

posted on 2020-12-14 09:40  蔚蓝色の天空  阅读(277)  评论(0编辑  收藏  举报