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)

浙公网安备 33010602011771号