gpt4 book ai didi

django - 如何使用 django Rest 框架为不同用户类型创建自定义用户模型

转载 作者:行者123 更新时间:2023-12-04 08:40:50 24 4
gpt4 key购买 nike

我是 django Rest 框架的新手,我想创建不同类型的用户“我认为应该是 4”,(学生、教师、职员和管理员)并且我希望职员用户注册教师和学生用户。我想使用自定义用户模型并使用电子邮件进行注册和登录,可以吗,请帮忙,我一直在寻找任何可以帮助我了解如何做到这一点的东西

最佳答案

您可以使用 AbstractUser ,这非常简单,因为类 django.contrib.auth.models.AbstractUser 提供了默认 User 作为抽象模型的完整实现。

**
from django.db import models
from django.contrib.auth.models import AbstractUser
USER_TYPE_CHOICES = (
('student', 'student'),
('teacher', 'teacher'),
('staff', 'staff'),
('admin', 'admin'),
)
class User(AbstractUser):
user_type = models.CharField(max_length=40,choices=USER_TYPE_CHOICES)
**

之后,您必须更新定义 AUTH_USER_MODEL 属性的 settings.py。

 AUTH_USER_MODEL = 'Your app name.User'

您可以在serializer.py中作为用户名发送电子邮件:

class RegisterSerializer(serializers.ModelSerializer):
password1 = serializers.CharField(write_only=True)

class Meta:
model = User
fields = ('first_name', 'last_name', 'email', 'password','password1', 'user_type',)

def validate(self, attr):
validate_password(attr['password'])
return attr

def create(self, validated_data):
user = User.objects.create(
username=validated_data['email'],
user_type=validated_data['user_type'],
email=validated_data['email'],
first_name=validated_data['first_name'],
last_name=validated_data['last_name'],

)
user.set_password(validated_data['password'])
user.save()



return user

现在,您可以在views.py中使用此序列化程序并创建具有不同用户类型的用户

最诚挚的问候,

关于django - 如何使用 django Rest 框架为不同用户类型创建自定义用户模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64577709/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com