我有一个像这样的 django 模型:
class UserProfile(models.Model):
username = models.CharField(max_length=16)
password = models.CharField(max_length=256)
email = models.CharField(max_length=64, null=True)
gender = models.CharField(max_length=8, null=True)
phone_number = models.PositiveIntegerField(unique=True)
profile_pic = models.FileField(upload_to=content_file_name)
badge = models.PositiveIntegerField(default=0)
def __str__(self):
return "%s" % self.username
def save(self, *args, **kwargs):
set_password(self=self, raw_password=self.password)
super(UserProfile, self).save(*args, **kwargs)
如您所见,我重写了该save
函数以调用set_password()
函数。
由于一个模糊的原因(或至少对我来说模糊),该save
方法被调用了两次。这是一个问题,因为它对我的密码进行了两次加密,之后无法检索。
我真的不知道为什么。我从 sweetpie API 调用这个模型。
告诉我您是否需要其他任何东西,我的设置或我的导入,我会添加它们。
编辑: set_password 代码:
def set_password(self, raw_password):
import random
algo = 'sha1'
salt = get_hexdigest(algo, str(random.random()), str(random.random()))[:5]
hsh = get_hexdigest(algo, salt, raw_password)
self.password = '%s$%s$%s' % (algo, salt, hsh)