📜  在 Django 中创建扩展 AbstractUser 的自定义用户模型 API(1)

📅  最后修改于: 2023-12-03 14:50:54.254000             🧑  作者: Mango

在 Django 中创建扩展 AbstractUser 的自定义用户模型 API

Django 是一个非常流行的 Web 开发框架,它提供了很多有用的内置功能,其中包括用户系统。Django 的用户系统默认使用了一个名为 User 的模型,但是在实际开发中,我们可能需要对用户模型进行扩展,以满足业务的需求。

本文将为大家介绍如何在 Django 中创建扩展 AbstractUser 的自定义用户模型 API。

使用 AbstractUser

Django 提供了一个名为 AbstractUser 的抽象用户模型,它是 Django 内置的 User 模型的一个扩展。AbstractUser 包含了一些常见的字段,比如用户名、密码、电子邮件等。我们可以通过继承 AbstractUser 来扩展 Django 的用户模型。具体步骤如下:

  1. models.py 中导入 AbstractUser

    from django.contrib.auth.models import AbstractUser
    
  2. 创建自定义用户模型:

    class CustomUser(AbstractUser):
        # 添加自定义字段
        phone_number = models.CharField(max_length=20)
    

    CustomUser 中添加了一个名为 phone_number 的自定义字段。

    除了 AbstractUser,Django 还提供了其他的抽象用户模型,比如 AbstractBaseUserAbstractEmailUser 等,开发者可以根据自己的需求选择适合自己的抽象用户模型。

  3. 修改 settings.py 中的 AUTH_USER_MODEL:

    AUTH_USER_MODEL = 'myapp.CustomUser'
    

    以上步骤完成后,Django 的用户系统将使用我们自定义的 CustomUser 模型代替默认的 User 模型。

数据库迁移

我们需要使用 Django 的数据库迁移机制来将新的用户模型更新到数据库中。具体步骤如下:

  1. myapp 目录下运行以下命令创建一个新的迁移文件:

    python manage.py makemigrations myapp
    
  2. 运行以下命令来将迁移应用到数据库中:

    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,并通过数据库迁移更新到数据库中。在实际开发中,我们可以根据自己的需求选择适合自己的抽象用户模型,以满足业务的需求。