我想用MiXin为自定义用户模型编写API。我写了一个CustomUser,它继承了Django用户模型。然后,我定义了具有某些属性的学生资料。在serilizer.py中,我定义了我想从用户那里获取信息的字段。现在在Views.py中,我不知道如何编写代码以使用CreateMixinModel来注册用户
class StudentSignUpView(mixins.ListModelMixin, mixins.CreateModelMixin, generics.GenericAPIView, ):
"""This part is relatng to sign up students a"""
queryset = Student.objects.all()
serializer_class = StudentSignUpSerializer
def get(self, request, *args, **kwargs):
return self.list(request, *args, **kwargs)
def post(self, request,**kwargs):
serializer = self.get_serializer(data=request.POST)
print("answerrrrrr----------->>>", serializer)
if serializer.is_valid():
customusers = CustomUser.objects.all()
我希望能够允许自定义用户注册
答案 0 :(得分:0)
您可以使用use泛型ListCreateAPIView
,而不必自己编写get和post。
所有用户创建都应由序列化程序处理。
尚不清楚Student
是否是您的自定义用户模型。我想是这样。
所以您的看法:
class StudentSignUpView( generics.ListCreateAPIView ):
"""This part is relatng to sign up students a"""
queryset = Student.objects.all()
serializer_class = StudentSignUpSerializer
您的序列化器:
class StudentSignUpSerializer(serializers.ModelSerializer):
class Meta:
model = Student
fields = ("username", "password")
def create(self, validated_data):
user = Student.objects.create_user(username=validated_data["username"],
password=validated_data["password"])
return user
您可以在序列化器中使用自定义用户模型,并且如果您是从django的AbstractUser继承的,则可以使用create_user
方法来创建用户,它还可以做一些神奇的事情(查找实现)。 / p>
如果您需要对某些学生资料进行其他操作(如您提到的那样),则可以在创建用户后在序列化程序中进行操作(也许作为一个原子事务)。