📅  最后修改于: 2023-12-03 14:50:54.254000             🧑  作者: Mango
Django 是一个非常流行的 Web 开发框架,它提供了很多有用的内置功能,其中包括用户系统。Django 的用户系统默认使用了一个名为 User
的模型,但是在实际开发中,我们可能需要对用户模型进行扩展,以满足业务的需求。
本文将为大家介绍如何在 Django 中创建扩展 AbstractUser
的自定义用户模型 API。
Django 提供了一个名为 AbstractUser
的抽象用户模型,它是 Django 内置的 User
模型的一个扩展。AbstractUser
包含了一些常见的字段,比如用户名、密码、电子邮件等。我们可以通过继承 AbstractUser
来扩展 Django 的用户模型。具体步骤如下:
在 models.py
中导入 AbstractUser
:
from django.contrib.auth.models import AbstractUser
创建自定义用户模型:
class CustomUser(AbstractUser):
# 添加自定义字段
phone_number = models.CharField(max_length=20)
在 CustomUser
中添加了一个名为 phone_number
的自定义字段。
除了 AbstractUser
,Django 还提供了其他的抽象用户模型,比如 AbstractBaseUser
、AbstractEmailUser
等,开发者可以根据自己的需求选择适合自己的抽象用户模型。
修改 settings.py
中的 AUTH_USER_MODEL:
AUTH_USER_MODEL = 'myapp.CustomUser'
以上步骤完成后,Django 的用户系统将使用我们自定义的 CustomUser
模型代替默认的 User
模型。
我们需要使用 Django 的数据库迁移机制来将新的用户模型更新到数据库中。具体步骤如下:
在 myapp
目录下运行以下命令创建一个新的迁移文件:
python manage.py makemigrations myapp
运行以下命令来将迁移应用到数据库中:
python manage.py migrate
至此,我们已经成功地创建了扩展 AbstractUser
的自定义用户模型 API。
安装完成以后,我们就可以像使用 Django 内置的用户模型一样使用我们自定义的用户模型了。比如,我们可以在视图中使用以下代码来获取当前用户:
from django.contrib.auth import get_user_model
def my_view(request):
user = get_user_model().objects.get(username=request.user.username)
# ...
本文介绍了如何在 Django 中创建扩展 AbstractUser
的自定义用户模型 API,并通过数据库迁移更新到数据库中。在实际开发中,我们可以根据自己的需求选择适合自己的抽象用户模型,以满足业务的需求。