views.py
from django.shortcuts import render
from django.http import HttpResponse, JsonResponse
from django.views.decorators.csrf import csrf_exempt
from rest_framework.parsers import JSONParser
from apps.api.models import Book
from apps.api.serializers import BookSerializer
from rest_framework.response import Response
from rest_framework import status
from rest_framework.decorators import api_view
# Create your views here.
@api_view(['GET', 'POST'])
def book_list(request):
"""
# For API View
"""
if request.method == 'GET':
book = Book.objects.all()
serializer = BookSerializer(book, many=True)
# For JSON VIEW
# return JsonResponse(serializer.data, safe=False)
return Response(serializer.data)
elif request.method == 'POST':
serializer = BookSerializer(data=data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
"""
# For JSON VIEW
elif request.method == 'POST':
data = JSONParser().parse(request)
serializer = BookSerializer(data=data)
if serializer.is_valid():
serializer.save()
return JsonResponse(serializer.data, status=201)
return JsonResponse(serializer.errors, status=400)
"""
api/urls.py
from django.urls import path
from apps.api import views
urlpatterns = [
path('api/', views.book_list),
path('api/<int:pk>/', views.book_detail),
]
models.py
from django.db import models
# Create your models here.
class Book(models.Model):
name = models.CharField(max_length=255)
author = models.CharField(max_length=255)
serializers.py
from rest_framework import serializers
from apps.api.models import Book
class BookSerializer(serializers.ModelSerializer):
class Meta:
model = Book
fields = '__all__'
project/urls.py
from django.contrib import admin
from django.urls import path, re_path, include
from django.views.generic import TemplateView
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('apps.api.urls')),
# re_path('.*', TemplateView.as_view(template_name='index.html')),
]
python manage.py shell
# Check Data in Object as serializer
from apps.api.serializers import BookSerializer
serializer = BookSerializer()
print(repr(serializer))
# Create Data in Object with serializer
from apps.api.models import Book
from apps.api.serializers import BookSerializer
from rest_framework.renderers import JSONRenderer
from rest_framework.parsers import JSONParser
book = Book(name='Harry Potter', author='J.K Rowling')
book.save()
book = Book(name='Hamlet', author='Shakespeare')
book.save()
views.py
def book_list(request, format=None):
api/urls.py
from rest_framework.urlpatterns import format_suffix_patterns
urlpatterns = format_suffix_patterns(urlpatterns)