How to register users in Django REST framework?

前端 未结 9 1463
说谎
说谎 2020-11-28 17:34

I\'m coding a REST API with Django REST framework. The API will be the backend of a social mobile app. After following the tutorial, I can serialise all my models and I am a

9条回答
  •  佛祖请我去吃肉
    2020-11-28 18:19

    Django REST Framework 3 allow override create method in serializers:

    from rest_framework import serializers
    from django.contrib.auth import get_user_model # If used custom user model
    
    UserModel = get_user_model()
    
    
    class UserSerializer(serializers.ModelSerializer):
    
        password = serializers.CharField(write_only=True)
    
        def create(self, validated_data):
    
            user = UserModel.objects.create(
                username=validated_data['username']
            )
            user.set_password(validated_data['password'])
            user.save()
    
            return user
    
        class Meta:
            model = UserModel
            # Tuple of serialized model fields (see link [2])
            fields = ( "id", "username", "password", )
    

    Serialized fields for classes inherited from ModelSerializer must be declared patently in Meta for Django Rest Framework v3.5 and newest.

    File api.py:

    from rest_framework import permissions
    from rest_framework.generics import CreateAPIView
    from django.contrib.auth import get_user_model # If used custom user model
    
    from .serializers import UserSerializer
    
    
    class CreateUserView(CreateAPIView):
    
        model = get_user_model()
        permission_classes = [
            permissions.AllowAny # Or anon users can't register
        ]
        serializer_class = UserSerializer
    

提交回复
热议问题