django定义Model时给密码字段md5或sha1加密
·
在验证密码时,一般时将输入的密码进行md5加密后,再与数据库已经加密的md5密码进行匹配,因此,可以直接在初始化model的时候给password进行md5加密,加密的方法如下:
通过重写save()方法来实现,同时一定需要使用super调用父类方法,否则默认的行为不会被触发,数据库也不会被操作。
需要先导入一个模块:
import hashlib
model的代码:
1. 在每次初始化和对model进行修改和新增的时候触发:
class Student(TimestampModel):
name = models.CharField(max_length=Constant.db_name_length, verbose_name='学生昵称', null=False)
phone = models.CharField(max_length=Constant.db_phone_length, unique=True, verbose_name='手机号', null=False)
password = models.CharField(max_length=Constant.db_password_length, verbose_name='密码')
class Meta:
verbose_name_plural = '学生'
verbose_name = '学生'
db_table = 'student'
ordering = ['create_datetime']
def save(self, *args, **kwargs):
md5 = hashlib.md5()
md5.update(self.password.encode())
self.password = md5.hexdigest()
super(Student, self).save(*args, **kwargs)
2. 在需要的时候才触发加密:
同样是先导入模块:
import hashlib
def md5(self, pwd):
md5 = hashlib.md5()
md5.update(pwd.encode())
saltpassword = md5.hexdigest()
return saltpassword
sha1 加密的方法和md5相似,sha1:
def sha1(key):
sha1_key = hashlib.sha1()
sha1_key.update(key.encode("utf-8"))
return sha1_key.hexdigest()
更多推荐
所有评论(0)