1. 程式人生 > 實用技巧 >APIView實現資料的增刪改查

APIView實現資料的增刪改查

urls.py的配置

from django.conf.urls import url,include
from django.contrib import admin
from app import views
from django.urls import path
urlpatterns = [
    path('test/',views.BookListView.as_view()),
    path('test/<int:book_id>/',views.BookDetailView.as_view())
]

views的配置

#測試APIView的request
from
rest_framework.views import APIView from rest_framework.response import Response from rest_framework import status from app.models import BookInfo from app.serializers import BookModelSerializer class BookListView(APIView): def get(self,request): '''列表檢視:查詢所有書籍''' book = BookInfo.objects.all() serializer
= BookModelSerializer(instance=book,many=True) return Response(serializer.data) def post(self,request): '''列表檢視:建立單本書籍''' book_data = request.data serializer = BookModelSerializer(data=book_data) serializer.is_valid(raise_exception=True) serializer.save()
return Response(serializer.data,status=status.HTTP_201_CREATED) class BookDetailView(APIView): def get(self,request,book_id): '''詳情檢視:查詢一本書籍''' book = BookInfo.objects.get(id=book_id) serializer = BookModelSerializer(instance=book) return Response(serializer.data,status=status.HTTP_200_OK) def put(self,request,book_id): '''修改一本書籍''' book = BookInfo.objects.get(id=book_id) book_data = request.data serializer = BookModelSerializer(instance=book,data=book_data) serializer.is_valid(raise_exception=True) serializer.save() return Response(serializer.data,status=status.HTTP_201_CREATED) def delete(self,request,book_id): '''刪除一本書籍''' book = BookInfo.objects.get(id=book_id) book.delete() return Response(status.HTTP_204_NO_CONTENT)