Skip to content

Instantly share code, notes, and snippets.

@mitchtabian
Created September 10, 2019 22:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mitchtabian/b42cd40219ed6c1f2e71717f6f056938 to your computer and use it in GitHub Desktop.
Save mitchtabian/b42cd40219ed6c1f2e71717f6f056938 to your computer and use it in GitHub Desktop.
from rest_framework.decorators import api_view, authentication_classes, permission_classes
# Register
# Response: https://gist.github.com/mitchtabian/c13c41fa0f51b304d7638b7bac7cb694
# Url: https://<your-domain>/api/account/register
@api_view(['POST', ])
@permission_classes([])
@authentication_classes([])
def registration_view(request):
if request.method == 'POST':
data = {}
email = request.data.get('email', '0')
if validate_email(email) != None:
data['error_message'] = 'That email is already in use.'
data['response'] = 'Error'
return Response(data)
username = request.data.get('username', '0')
if validate_username(username) != None:
data['error_message'] = 'That username is already in use.'
data['response'] = 'Error'
return Response(data)
serializer = RegistrationSerializer(data=request.data)
if serializer.is_valid():
account = serializer.save()
data['response'] = 'successfully registered new user.'
data['email'] = account.email
data['username'] = account.username
data['pk'] = account.pk
token = Token.objects.get(user=account).key
data['token'] = token
else:
data = serializer.errors
return Response(data)
def validate_email(email):
account = None
try:
account = Account.objects.get(email=email)
except Account.DoesNotExist:
return None
if account != None:
return email
def validate_username(username):
account = None
try:
account = Account.objects.get(username=username)
except Account.DoesNotExist:
return None
if account != None:
return username
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment