3

私はこのようなジャンゴモデルを持っています:

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メソッドは2 回呼び出されます。パスワードが 2 回暗号化され、後で取得できなくなるため、これは問題です。

理由は本当にわかりません。このモデルは、tastypie 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)
4

0 に答える 0