为自定义管理器 Django 创建用户方法
Create User method for Custom Manager Django
我正在学习本教程 (http://musings.tinbrain.net/blog/2014/sep/21/registration-django-easy-way/)
在 Django 中创建用户注册模型。
我了解到 class UserManager 正在覆盖默认的用户模型。但是,我不明白这个特定的部分。
官方 Django 文档没有解释这意味着什么 - 它只是显示了完整的代码。
https://docs.djangoproject.com/en/1.7/topics/auth/customizing/
需要澄清这里发生了什么。
user = self.model(email=self.normalize_email(email), is_active=True, **kwargs)
user.set_password(password)
user.save(using=self._db)
这是整个class。
class UserManager(BaseUserManager):
def create_user(self, email, password, **kwargs):
user = self.model(email=self.normalize_email(email), is_active=True, **kwargs)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, email, password, **kwargs):
user = self.model(email=email, is_staff=True, is_superuser=True, is_active=True, **kwargs)
user.set_password(password)
user.save(using=self._db)
return user
在内存中创建用户实例。 self.model
属性已填充,然后在模型中实例化模型管理器 class:
class MyUser(AbstractBaseUser):
objects = UserManager() # here the `objects.model` is set to `MyUser`
规范化的电子邮件意味着域部分是小写的。 is_active
是 True
,因此用户可以登录。如果任何其他字段作为 keyword arguments 传递给 create_user()
,则将这些字段分配给创建的用户。
user = self.model(email=self.normalize_email(email), is_active=True, **kwargs)
设置哈希密码。
user.set_password(password)
将用户实例保存到数据库中。
user.save(using=self._db)
我正在学习本教程 (http://musings.tinbrain.net/blog/2014/sep/21/registration-django-easy-way/) 在 Django 中创建用户注册模型。
我了解到 class UserManager 正在覆盖默认的用户模型。但是,我不明白这个特定的部分。
官方 Django 文档没有解释这意味着什么 - 它只是显示了完整的代码。
https://docs.djangoproject.com/en/1.7/topics/auth/customizing/
需要澄清这里发生了什么。
user = self.model(email=self.normalize_email(email), is_active=True, **kwargs)
user.set_password(password)
user.save(using=self._db)
这是整个class。
class UserManager(BaseUserManager):
def create_user(self, email, password, **kwargs):
user = self.model(email=self.normalize_email(email), is_active=True, **kwargs)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, email, password, **kwargs):
user = self.model(email=email, is_staff=True, is_superuser=True, is_active=True, **kwargs)
user.set_password(password)
user.save(using=self._db)
return user
在内存中创建用户实例。 self.model
属性已填充,然后在模型中实例化模型管理器 class:
class MyUser(AbstractBaseUser):
objects = UserManager() # here the `objects.model` is set to `MyUser`
规范化的电子邮件意味着域部分是小写的。 is_active
是 True
,因此用户可以登录。如果任何其他字段作为 keyword arguments 传递给 create_user()
,则将这些字段分配给创建的用户。
user = self.model(email=self.normalize_email(email), is_active=True, **kwargs)
设置哈希密码。
user.set_password(password)
将用户实例保存到数据库中。
user.save(using=self._db)