gpt4 book ai didi

python - 在 Django 自定义用户管理器中,create_user 和 _create_user() 之间的区别?

转载 作者:行者123 更新时间:2023-12-04 04:34:23 25 4
gpt4 key购买 nike

我正在尝试完成 Django 自定义用户管理器的教程。它们中的大多数都像文档中所说的那样覆盖 create_user() 和 create_super_user(),但是本教程将这两个方法单独保留,而是覆盖 _create_user()

http://www.caktusgroup.com/blog/2013/08/07/migrating-custom-user-model-django/

它是否正确?覆盖 _create_user() 与 create_user() 有什么区别?

最佳答案

下面是 _create_user、create_super_user 和 create_user 方法的代码。

def _create_user(self, username, email, password,
is_staff, is_superuser, **extra_fields):
"""
Creates and saves a User with the given username, email and password.
"""
now = timezone.now()
if not username:
raise ValueError('The given username must be set')
email = self.normalize_email(email)
user = self.model(username=username, email=email,
is_staff=is_staff, is_active=True,
is_superuser=is_superuser, last_login=now,
date_joined=now, **extra_fields)
user.set_password(password)
user.save(using=self._db)
return user

def create_user(self, username, email=None, password=None, **extra_fields):
return self._create_user(username, email, password, False, False,
**extra_fields)

def create_superuser(self, username, email, password, **extra_fields):
return self._create_user(username, email, password, True, True,
**extra_fields)

如您所见, create_user 和 create_super_user 方法正在调用 _create_user 函数。方法开头的下划线表示该函数仅供内部使用。覆盖内部方法很好,但根据我的观点,最好在设计上覆盖公共(public)方法。

关于python - 在 Django 自定义用户管理器中,create_user 和 _create_user() 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20014136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com