Skip to content

Instantly share code, notes, and snippets.

@hemanth-sp
Created February 3, 2021 16:55
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 hemanth-sp/f580ce10ca0dac1e92fbd159e71784db to your computer and use it in GitHub Desktop.
Save hemanth-sp/f580ce10ca0dac1e92fbd159e71784db to your computer and use it in GitHub Desktop.
Function-based curd
from curd.serializers import StudentSerializers
from curd.models import Student
from rest_framework import status
from rest_framework.response import Response
from rest_framework.decorators import api_view
from django.shortcuts import get_object_or_404
@api_view(['GET', 'POST'])
def students_list_or_create(request):
if request.method == "GET":
students_qs = Student.objects.all()
student_serializers = StudentSerializers(students_qs, many=True)
return Response(student_serializers.data, status=status.HTTP_200_OK)
else:
student_serializers = StudentSerializers(data=request.data)
student_serializers.is_valid(raise_exception=True)
student_serializers.save()
return Response(student_serializers.data, status=status.HTTP_201_CREATED)
@api_view(['GET', 'PUT', 'DELETE'])
def students_get_or_update(request, pk):
student = get_object_or_404(Student, id=pk)
if request.method == "GET":
student_serializers = StudentSerializers(student)
return Response(student_serializers.data, status=status.HTTP_200_OK)
if request.method == "PUT":
student_serializers = StudentSerializers(instance=student, data=request.data)
student_serializers.is_valid(raise_exception=True)
student_serializers.save()
return Response(student_serializers.data, status=status.HTTP_200_OK)
if request.method == "DELETE":
student.delete()
return Response({'msg': 'done'}, status=status.HTTP_204_NO_CONTENT)
urlpatterns = [
path('students', students_list_or_create, name="students_list_or_create"),
path('students/<int:pk>/', students_get_or_update, name="students_get_or_update"),
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment