Request data:- {'title': 'title 2', 'body': 'body 2'}
Serialized data:- {'pk': 2, 'title': '', 'body': ''}
[06/Feb/2020 17:19:36] "POST /api/blog/ HTTP/1.1" 201 29
[06/Feb/2020 17:19:44] "GET /api/blog/ HTTP/1.1" 200 168
from blog.models import Blogfrom blog.serializers import BlogSerializerfrom django.core.paginator import EmptyPage, PageNotAnInteger, Paginatorfrom rest_framework import statusfrom rest_framework.decorators import api_viewfrom rest_framework.response import Response@api_view(["GET", "POST"])def blog_collection(request):"""API for operations on blogs, handles following operations1. Fetch(GET) the list of blogs.2. Create(POST) a new blog entry."""if request.method == "POST":print(f"Request data:- {request.data}")if request.data == dict():return Response(status=status.HTTP_400_BAD_REQUEST)serializer = BlogSerializer(data=request.data)if serializer.is_valid():serializer.save()print(f"Serialized data:- {serializer.data}")return Response(serializer.data, status=status.HTTP_201_CREATED)return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
from blog.models import Blogfrom rest_framework import serializersclass BlogSerializer(serializers.ModelSerializer):class Meta:model = Blogfields = ("pk", "title", "body")
from django.db import modelsclass Blog(models.Model):_title = models.CharField("Title", max_length=250)_body = models.TextField("Body")@propertydef title(self):return self._title@title.setterdef title(self, value):self._title = value@propertydef body(self):return self._body@body.setterdef body(self, value):self._body = value@staticmethoddef get_blogs():return Blog.objects.all().order_by("id")@staticmethoddef get_by_pk(pk):return Blog.objects.get(pk=pk)@staticmethoddef get_by_attributes(attributes):return Blog.objects.get(**attributes)@staticmethoddef create_blog(data):obj = Blog.objects.create(**data)obj.save()return obj@staticmethoddef update_blog(pk, data):Blog.objects.filter(pk=pk).update(**data)@staticmethoddef delete_blog(pk):Blog.objects.get(pk=pk).delete()def __str__(self):return f"<Title:- {self.title[0:50]}>"