diff --git a/backend/videoflix/users/serializer.py b/backend/videoflix/users/serializer.py new file mode 100644 index 0000000..859a17e --- /dev/null +++ b/backend/videoflix/users/serializer.py @@ -0,0 +1,7 @@ +from rest_framework import serializers +from .models import CustomUser + +class UserSerializer(serializers.ModelSerializer): + class Meta: + model = CustomUser + fields = ["id", "username", "first_name", "last_name", "email"] \ No newline at end of file diff --git a/backend/videoflix/users/views.py b/backend/videoflix/users/views.py index 91ea44a..28946e0 100644 --- a/backend/videoflix/users/views.py +++ b/backend/videoflix/users/views.py @@ -1,3 +1,44 @@ +from django.http import JsonResponse from django.shortcuts import render +from rest_framework.decorators import api_view +from rest_framework.response import Response +from rest_framework import status +from .serializer import UserSerializer +from .models import CustomUser -# Create your views here. +@api_view(['GET', 'POST']) +def user_list(request): + + if request.method == 'GET': + user = CustomUser.objects.all() + serializer = UserSerializer(user, many=True) + return Response(serializer.data) + + elif request.method == 'POST': + serializer = UserSerializer(data= request.data) + if serializer.is_valid(): + serializer.save + return Response(serializer.data, status=status.HTTP_201_CREATED) + +@api_view(['GET', 'PUT', 'DELETE']) +def user_detail(request, id): + + try: + user = CustomUser.objects.get(pk=id) + except CustomUser.DoesNotExist: + return Response(status=status.HTTP_404_NOT_FOUND) + + if request.method == 'GET': + serializer = UserSerializer(user) + return Response(serializer.data) + + elif request.method == 'PUT': + serializer = UserSerializer(user, data=request.data) + if serializer.is_valid(): + serializer().save() + return Response(serializer.data) + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + + elif request.method == 'DELETE': + user.delete() + return Response(status=status.HTTP_204_NO_CONTENT) \ No newline at end of file diff --git a/backend/videoflix/videoflix/urls.py b/backend/videoflix/videoflix/urls.py index 6b7d18f..059b8d0 100644 --- a/backend/videoflix/videoflix/urls.py +++ b/backend/videoflix/videoflix/urls.py @@ -16,7 +16,10 @@ Including another URLconf """ from django.contrib import admin from django.urls import path +from users import views urlpatterns = [ path('admin/', admin.site.urls), + path('users/', views.user_list), + path('users//', views.user_detail), ]