相关疑难解决方法(0)

Django 用户模型:save() 方法中密码更改的目的是什么

有时我想以编程方式设置密码。我执行以下操作:

https://docs.djangoproject.com/en/2.2/topics/auth/default/#changing-passwords
You can also change a password programmatically, using set_password():

from django.contrib.auth.models import User
u = User.objects.get(username='john')
u.set_password('new pass')
u.save()
Run Code Online (Sandbox Code Playgroud)

我想看看当我们运行时,save() 中的事情是如何实现的u.save()

基本上我想理解 AbstractBaseUser 中使用的 save() 方法

# ./.venv/lib/python3.7/site-packages/django/contrib/auth/base_user.py
class AbstractBaseUser(models.Model):
    password = models.CharField(_('password'), max_length=128)

    ........

    # Stores the raw password if set_password() is called so that it can
    # be passed to password_changed() after the model is saved.
    _password = None


    def save(self, *args, **kwargs):
        super().save(*args, **kwargs)
        if self._password is not None:
            password_validation.password_changed(self._password, self)
            self._password = None …
Run Code Online (Sandbox Code Playgroud)

django django-authentication

4
推荐指数
1
解决办法
912
查看次数

标签 统计

django ×1

django-authentication ×1