当前位置: 首页 > 科技观察

如何在Django中创建自己的自定义用户模型?

时间:2023-03-18 13:05:21 科技观察

本文将帮助您在Django中创建自己的自定义用户模型自定义用户模型有哪些需求?创建您自己的自定义用户模型是必不可少的。将来,如果您想对您的模型进行一些更改,您可以轻松地进行这些更改。否则我们可能不得不对模型进行一些更改,并且代码的某些部分也会更改。在某些站点上,使用电子邮件而不是用户名登录更有意义。因此,对于程序员来说,拥有自定义用户模型是一种很好的做法。本文将帮助您根据需要创建自己的自定义用户模型。请继续执行以下步骤。Django安装创建一个Django应用程序自定义模型迁移数据库1.Django安装Django设置完成后,进入创建的环境。然后,我们可以通过以下命令创建一个Django项目。django-adminstartprojectmysite2。创建Django应用程序如果您发现某些网站使用像/accounts/这样的URL,它们看起来像是专业代码。所以我们还需要创建一个名为accounts的应用程序,我们可以在其中管理与帐户相关的所有内容。所以,在当前环境下,使用如下命令创建一个Django应用。一旦由pythonmanage.pystartappaccounts创建,该应用程序将包含基本文件。创建的文件如下。accounts/__init__.pyadmin.pyapps.pymodels.pytests.pyviews.py一旦创建,所有的数据库模型代码都应该写在models.py文件中。另外,不要忘记创建一个urls.py文件来帮助通过帐户应用程序路由链接。创建完成后,让我们进入下一步,根据我们的需要构建自定义用户模型。3.应用程序的自定义模型因此,为了创建自定义用户模型,我们需要在models.py文件中编写以下代码,因为python使用对象来管理和访问存储在数据库中的数据。models.py文件的代码如下所述。fromdjango.dbimportmodelsfromdjango.contrib.auth.modelsimportAbstractBaseUser,BaseUserManagerimportuuidclassUserManager(BaseUserManager):defcreate_user(self,email,firstname,lastname,phone,password=None):user=self.model(email=self.normalize_email(email),名字名字=名字,lastnamelastname=lastname,phonephone=phone,)user.set_password(密码)user.save(using=self._db)returnuserdefcreate_superuser(self,email,firstname,lastname,phone,password=None):user=self.create_user(emailemail=email,passwordpassword=密码,firstnamefirstname=firstname,lastnamelastname=lastname,phonephone=phone,)user.is_admin=Trueuser.is_staff=Trueuser.save(using=self._db)returnuserclassUser(AbstractBaseUser):id=models.CharField(max_length)=200,default=uuid.uuid4,unique=True,primary_key=True)email=models.EmailField(null=False,max_length=100,unique=True)firstname=models.CharField(null=False,max_length=100)lastname=models.CharField(null=False,max_length=100)phone=models.IntegerField(null=False,unique=True)date_joined=models.DateTimeField(auto_now=True)last_login=models.DateTimeField(auto_now=True)is_admin=models.BooleanField(default=False)is_active=models.BooleanField(default=True)is_staff=models.BooleanField(default=False)is_superuser=models.BooleanField(default=False)USERNAME_FIELD='email'REQUIRED_FIELDS=['firstname','lastname','phone']objects=UserManager()def__str__(self):returnsself.email+","+self.firstnamedefhas_perm(self,perm,obj=None):returnsself.is_admindefhas_module_perms(self,app_label):returnTrue用户类包含表的字段或结构,我们在其中获取有关用户的一些详细信息和一些这些条件是为了管理我们有UserManager的User类,它将用于创建新用户或超级用户。就像我之前说的,这里的用户名字段将被替换为电子邮件。它比用户名字段更有意义。还提到了必填字段。通过使用电子邮件作为用户名字段,它会自动将电子邮件字段添加为必填字段。所以,通过UserManager,我们可以创建一个新的普通用户和一个超级用户。user.set_password()会将纯文本密码散列为默认散列算法。Django使用具有SHA-256散列的PBKDF2并具有密码扩展机制。user.save()函数将使用字段和散列密码保存创建的用户。创建自定义用户模型很容易。这里注意,在创建模型之前不要迁移模型。在此之前,创建模型后,我们必须使用自定义模型更新Django设置文件,否则Django将使用自己的预实现模型。只需在项目目录中的settings.py文件中使用此代码。AUTH_USER_MODEL='accounts.User'模型设置好后,就可以将模型迁移到数据库中了。4.迁移模型我们现在准备通过将更改迁移到数据库来迁移自定义用户模型。使用以下命令在当前环境中迁移并执行代码。pythonmanage.pymakemigrationspythonmanage.pymigrate此命令将查找Django项目中的所有模型和模型中的更改。如果您想专门为您的应用程序进行迁移,可以使用以下命令进行。pythonmanage.pymakemigrationspythonmanage.pymigrate可以用帐户替换以仅在该应用程序上进行更改。