Rest Api
settings.py
INSTALLED_APPS = [
'rest_framework',
]
models.py
from django_mongoengine import Document
from django_mongoengine.fields
# Create your models here.
class Category(Document):
name = fields.StringField()
def __str__(self):
return self.name
serializer.py
from rest_framework import serializers
from Blog.models import Category
class CategorySerializer(serializers.Serializer):
name = serializers.CharField()
def to_representation(self,instance):
return {
'name':instance.name
}
def create(self,validated_data) :
return Category(**validated_data)
def update(self,instance,validated_data) :
instance.name= validated_data.get('name',instance.name)
instance.save()
return instance
views.py
from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework import status
from Blog.models import Category
from .serializer import CategorySerializer
@api_view(['POST'])
def create_category(request):
serializer = CategorySerializer(data=request.data)
if serializer.is_valid():
category_instance = Category(**serializer.validated_data)
category_instance.save()
serializer_category = CategorySerializer(category_instance)
return Response(serializer_category.data,status=status.HTTP_201_CREATED)
else:
return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)
@api_view(['GET'])
def category_list(request):
category = Category.objects.all()
serializer=CategorySerializer(category,many=True)
return Response(serializer.data,status=status.HTTP_200_OK)
@api_view(['GET'])
def category_details(request,name):
try:
category= Category.objects.get(name=name)
except Category.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
serializer = CategorySerializer(category)
return Response(serializer.data,status=status.HTTP_200_OK)
@api_view(['PUT'])
def category_edit(request,name):
try:
category = Category.objects.get(name=name)
except Category.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
serializer= CategorySerializer(category,data=request.data)
if serializer.is_valid():
#Implement the update logic
updated_category = serializer.update(category,serializer.validated_data)
updated_serializer=CategorySerializer(updated_category)
return Response(updated_serializer.data,status=status.HTTP_200_OK)
else :
return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)
@api_view(['DELETE'])
def category_delete(request,name):
try:
category = Category.objects.get(name=name)
except Category.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
category.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
urls.py
from django.urls import path
from .import views
urlpatterns = [
path('create_category/',views.create_category,name='create_category'),
path('category_list/',views.category_list,name='category_list'),
path('category_details/<str:name>',views.category_details,name='category_details'),
path('category_edit/<str:name>',views.category_edit,name='category_edit'),
path('category_delete/<str:name>',views.category_delete,name='category_delete'),
]
Last updated