📅  最后修改于: 2023-12-03 15:37:19.723000             🧑  作者: Mango
在Django中我们可以使用自带的User模型来实现用户认证,但是有时候我们需要自定义一些字段或方法来满足我们的需求,这时候就需要使用Django的AbstractUser来创建自定义用户模型了。
在使用Django Restframework (DRF)开发API时,需要使用自定义用户模型来代替Django自带的User模型。本文将介绍在DRF中如何使用AbstractUser创建自定义用户模型,让你的API更加符合你的业务需求。
首先,我们需要在models.py
文件中创建自定义用户模型,通过继承AbstractUser
类来扩展用户模型。
from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
# 添加我们需要的字段
phone_number = models.CharField(max_length=20)
address = models.CharField(max_length=100)
# 添加我们需要的方法
def get_full_address(self):
return f'{self.address} {self.city} {self.state} {self.country}'
在上面的例子中,我们添加了两个新的字段:phone_number
和address
,以及一个新的方法get_full_address
。
然后,我们需要在settings.py
文件中指定我们的自定义用户模型为默认用户模型。
AUTH_USER_MODEL = 'myapp.CustomUser'
在上面的例子中,我们指定了CustomUser
为我们的默认用户模型,其中myapp
为我们自己的应用名。
最后,我们需要在序列化器中更新我们的用户模型。
from rest_framework import serializers
from myapp.models import CustomUser
class CustomUserSerializer(serializers.ModelSerializer):
class Meta:
model = CustomUser
fields = ['id', 'username', 'email', 'phone_number', 'address']
class CustomUserDetailSerializer(serializers.ModelSerializer):
class Meta:
model = CustomUser
fields = '__all__'
在上面的例子中,我们使用CustomUserSerializer
和CustomUserDetailSerializer
分别序列化列表和详情。
在Django Restframework中使用AbstractUser创建自定义用户模型非常简单。需要注意的是,创建一个自定义用户模型不是所见即所得的操作,你需要仔细考虑你的业务需求并做出相应的扩展。