| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- from django.contrib.auth import get_user_model
- from django.contrib.auth.models import User
- from rest_framework import serializers
- from rest_framework.authtoken.models import Token
- from rest_framework.authtoken.views import ObtainAuthToken
- from rest_framework.response import Response
- UserModel = get_user_model()
- class UserSerializer(serializers.HyperlinkedModelSerializer):
- 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.email = validated_data['username']
- user.last_name = self.initial_data['last_name']
- user.first_name = self.initial_data['first_name']
- user.save()
- return user
- class Meta:
- model = User
- fields = ['id', 'username', 'email', 'password', 'last_name', 'first_name', 'last_login']
- class CurrentUserSerializer(serializers.ModelSerializer):
- class Meta:
- model = User
- fields = ['id', 'username', 'email', 'first_name', 'last_name', 'last_login']
- class CustomAuthToken(ObtainAuthToken):
- def post(self, request, *args, **kwargs):
- serializer = self.serializer_class(data=request.data,
- context={'request': request})
- serializer.is_valid(raise_exception=True)
- user = serializer.validated_data['user']
- token, created = Token.objects.get_or_create(user=user)
- return Response({
- 'token': token.key,
- 'user_id': user.pk,
- 'email': user.email,
- 'last_name': user.last_name,
- 'first_name': user.first_name
- })
|