Skip to content

Instantly share code, notes, and snippets.

@antikytheraton
Forked from cdrx/gist:6952891
Created November 24, 2017 01:14
Show Gist options
  • Save antikytheraton/a35b87b7ec7845e0d71a047a6208e217 to your computer and use it in GitHub Desktop.
Save antikytheraton/a35b87b7ec7845e0d71a047a6208e217 to your computer and use it in GitHub Desktop.
Django user registration with a custom user model via a Django REST Framework request
from django.contrib.auth import get_user_model
from rest_framework import status, serializers
from rest_framework.decorators import api_view
from rest_framework.response import Response
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = get_user_model()
@api_view(['POST'])
def register(request):
VALID_USER_FIELDS = [f.name for f in get_user_model()._meta.fields]
DEFAULTS = {
# you can define any defaults that you would like for the user, here
}
serialized = UserSerializer(data=request.DATA)
if serialized.is_valid():
user_data = {field: data for (field, data) in request.DATA.items() if field in VALID_USER_FIELDS}
user_data.update(DEFAULTS)
user = get_user_model().objects.create_user(
**user_data
)
return Response(UserSerializer(instance=user).data, status=status.HTTP_201_CREATED)
else:
return Response(serialized._errors, status=status.HTTP_400_BAD_REQUEST)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment