创建【Django】自定义用户

定制用户是什么? shì ?)

在Django中,自定义用户是指Web应用程序开发者独自创建的用户模型。虽然Django已经提供了标准的User模型,但官方并不推荐使用该模型。
通过定义自定义用户,可以创建标准的User模型中未定义的字段。

有关用户模型

以下是標準的User模型中提供的一些字段(部分)。

field補足username必須。 150文字以下。
ユーザー名には英数字が含まれている場合がありますfirst_nameオプション(blank=True)。150 文字以下。last_nameオプション(blank=True)。150 文字以下。emailオプション(blank=True)。メールpassword必須。パスワードのハッシュとメタデータ。

在创建 web 应用程序时,如果想要定义更多字段作为用户信息,需要定义自定义用户模型。实际上,在创建应用程序时,定义自定义用户是必需的。如前所述,Django 官方也不推荐使用 User 模型,原因是一旦在 User 模型上进行了定义(迁移),就无法再定义自定义用户了。换句话说,即使想要添加希望用户字段扩展的项目,也无法进行更改。
参考链接:https://docs.djangoproject.com/en/4.2/ref/contrib/auth/

自定义用户创建方法

实际上,定义自定义用户有以下四个主要步骤。

    1. 自定义用户的定义

 

    1. 自定义用户的定制

 

    1. 将其应用为用户管理模型

 

    在管理界面中管理自定义用户

1. 自定义用户的定义

首先,原本預先準備好的User模型是如何定義的呢?它是繼承自AbstractUser類別所定義的。換句話說,只要繼承AbstractUser並重新定義CustomUser,就能輕易地創建自訂用戶。這個AbstractUser不僅具有權限管理和驗證等功能,也能讓自訂用戶的認證變得簡單。

from django.contrib.auth.models import AbstractUser

class CustomUser(AbstractUser):
    pass

我实际上创建了一个自定义用户。通过继承AbstractUser来完成,因此这种状态下的自定义用户实际上使用了User模型,与之没有什么不同。(然而,这样做可以使最初使用与User模型相同的功能,但之后可以进行定制。)

2. 客户定制用户的自定义

让我们为自定义用户添加所需的字段。由于继承了AbstractUser,因此无需再列出用户模型(User Model)上已经存在的字段,只需编写要添加的字段即可。在这个例子中,我们希望将身高和体重作为用户信息保留,所以决定定义weight和height字段。

from django.db import models
from django.contrib.auth.models import AbstractUser

class CustomUser(AbstractUser):
    height = models.FloatField()
    weight = models.FloatField()

    REQUIRED_FIELDS = ["height", "weight"]

此外,在此处,我们以列表形式将已添加的字段赋值给REQUIRED_FIELDS。这是一种描述,用于在通过命令创建超级用户createsuperuser时指出必填字段的输入。

3.应用作为用户管理模型

之后我们将把用于认证的用户模型更改为自定义用户。
目前,User模型被用于认证的设置。因此,如果创建自定义用户并尝试创建用户,则认证将完全没有意义。
因此,让我们在settings.py文件中进行设置以使用认证模型。

AUTH_USER_MODEL = 'アプリ名.カスタムユーザーのModel名'

#今回だと
AUTH_USER_MODEL = 'アプリ名.CustomUser'

当达到这一步,可以通过执行makemigration→migrate来完成模型的定义。

用管理界面管理自定义用户

自定义用户的定义已经完成,并且已经在web应用程序中应用自定义用户进行用户创建,并设置了用于认证的模型。我以为一切都结束了,但是在这种情况下,自定义用户并没有应用到Django提供的管理界面中。(localhost:端口/admin页面)
为了在管理界面中应用自定义用户,需要在admin.py文件中添加以下描述。

from django.contrib import admin
from django.contrib.auth import get_user_model

CustomUser = get_user_model()

admin.site.register(CustomUser)

从上述内容中的自定义用户定义出发,进行了认证和管理所涉及的配置更改已经完成。

最后

因为在Django中创建Web应用程序时,创建自定义用户是必需的,所以我把它记在文章中,以防忘记。在自定义用户定义中,还可以定义和重写方法,这样可以使代码更易读!希望以后在Django中继续努力开发Web应用程序~~~

广告
将在 10 秒后关闭
bannerAds