2个视图基类,5个视图扩展类,9个视图子类,视图集

from django.shortcuts import render
from rest_framework.response import Response
from rest_framework.views import APIView

from .serializers import BooksSerializers,UserModelSerializers
from app01 import models

# Create your views here.
#########################################################  APIView  #######################################################
# class Books(APIView):
#     def get(self, request):
#         books = models.Books.objects.all()
#         ser = BooksSerializers(instance=books, many=True)
#         return Response(ser.data)
#
#     def post(self, request):
#         ser = BooksSerializers(data=request.data)
#         if ser.is_valid():
#             ser.save()
#             return Response({'code': '200', 'msg': '新建成功', 'data': ser.data})
#         else:
#             return Response({'code': '201', 'msg': '新建失败', 'erorrs': ser.errors})
#
# class Booksview(APIView):
#     def get(self, request, pk):
#         book = models.Books.objects.filter(pk=pk).first()
#         ser = BooksSerializers(instance=book, many=False)
#         return Response(ser.data)
#
#     def put(self, request, pk):
#         book = models.Books.objects.filter(pk=pk).first()
#         ser = BooksSerializers(instance=book, data=request.data)
#         if ser.is_valid():
#             ser.save()
#             return Response({'code': '200', 'msg': '修改成功', 'data': ser.data})
#         else:
#             return Response({'code': '201', 'msg': '修改失败', 'erorrs': ser.errors})
#
#
#     def delete(self,request,pk):
#         book = models.Books.objects.filter(pk=pk).first()
#         if book:
#             book.delete()
#             return Response({'code': '200', 'msg': '删除成功',})
#         else:
#             return Response({'code': '201', 'msg': '数据不存在',})
#

#############################################################   GenericAPIView   #############################################################
# from rest_framework.generics import GenericAPIView
#
#
# class Books(GenericAPIView):
#     queryset = models.Books.objects.all()
#     serializer_class = BooksSerializers
#
#     def get(self, request):
#         ser = self.get_serializer(instance=self.get_queryset(), many=True)
#         return Response(ser.data)
#
#     def post(self, request):
#         ser = self.get_serializer(data=request.data)
#         if ser.is_valid():
#             ser.save()
#             return Response({'code': '200', 'msg': '新建成功', 'data': ser.data})
#         else:
#             return Response({'code': '201', 'msg': '新建失败', 'erorrs': ser.errors})
#
#
# class Booksview(GenericAPIView):
#     queryset = models.Books.objects.all()
#     serializer_class = BooksSerializers
#
#     def get(self, request, pk):
#         book = self.get_object()
#         ser = self.get_serializer(instance=book, many=False)
#         return Response(ser.data)
#
#     def put(self, request, pk):
#         book = self.get_object()
#         ser = self.get_serializer(instance=book, data=request.data)
#         if ser.is_valid():
#             ser.save()
#             return Response({'code': '200', 'msg': '修改成功', 'data': ser.data})
#         else:
#             return Response({'code': '201', 'msg': '修改失败', 'erorrs': ser.errors})
#
#     def delete(self, request, pk):
#         book = self.get_object()
#         if book:
#             book.delete()
#             return Response({'code': '200', 'msg': '删除成功', })
#         else:
#             return Response({'code': '201', 'msg': '数据不存在', })


##############################################     5个扩展类      #######################################################
# 5个扩展类

# from rest_framework.mixins import ListModelMixin, RetrieveModelMixin, CreateModelMixin, UpdateModelMixin, \
#     DestroyModelMixin
#
# from rest_framework.generics import GenericAPIView
#
#
# class Books(ListModelMixin, CreateModelMixin, GenericAPIView):
#     queryset = models.Books.objects.all()
#     serializer_class = BooksSerializers
#
#     def get(self, request):
#         return super().list(request)
#
#     def post(self, request):
#         return super().create(request)
#
#
# class Booksview(RetrieveModelMixin, UpdateModelMixin, DestroyModelMixin, GenericAPIView):
#     queryset = models.Books.objects.all()
#     serializer_class = BooksSerializers
#
#     def get(self, request, pk):
#         return super().retrieve(request, pk)
#
#     def put(self, request, pk):
#         return super().update(request, pk)
#
#     def delete(self, request, pk):
#         return super().destroy(request, pk)


################################################   9个视图子类    ########################################################
# 9个视图子类

# from rest_framework.generics import ListAPIView, CreateAPIView, RetrieveAPIView, UpdateAPIView, DestroyAPIView, \
#     ListCreateAPIView, RetrieveUpdateAPIView, RetrieveDestroyAPIView, \
#     RetrieveUpdateDestroyAPIView
#
#
# class Books(ListCreateAPIView):
#     queryset = models.Books.objects.all()
#     serializer_class = BooksSerializers
#
# class Booksview(RetrieveUpdateDestroyAPIView):
#     queryset = models.Books.objects.all()
#     serializer_class = BooksSerializers

####################################################   5个视图集      ###################################################
# 5个视图集
from rest_framework.viewsets import ModelViewSet, ReadOnlyModelViewSet, ViewSetMixin, ViewSet, GenericViewSet
from rest_framework.decorators import action


###########################################  ModelViewSet  #############################################################
# class Books(ModelViewSet):
#     queryset = models.Books.objects.all()
#     serializer_class = BooksSerializers

############################################   ReadOnlyModelViewSet   #################################################
# class Books(ReadOnlyModelViewSet):
#     queryset = models.Books.objects.all()
#     serializer_class = BooksSerializers

#######################################  ViewSet #######################################################################
"""

postman测试的时候路由全部到     /结尾

"""
# class Books(ViewSet):
#     # 写了url_path,http://127.0.0.1:8000/books/getall
#     # 没写url_path,http://127.0.0.1:8000/books/get1   (函数名)
#     # m http://127.0.0.1:8000/books/getall/
#     @action(methods=['get'], detail=False, url_path='getall')
#     def get1(self, request):
#         books = models.Books.objects.all()
#         ser = BooksSerializers(instance=books, many=True)
#         return Response(ser.data)
#
#     # http://127.0.0.1:8000/books/1/getone/
#     @action(methods=['get'], detail=True, url_path='getone')
#     def get2(self, request, pk):
#         book = models.Books.objects.filter(pk=pk).first()
#         ser = BooksSerializers(instance=book, many=False)
#         return Response(ser.data)
#
#     # http://127.0.0.1:8000/books/add/
#     @action(methods=['post'], detail=False, url_path='add')
#     def post(self, request):
#         ser = BooksSerializers(data=request.data)
#         if ser.is_valid():
#             ser.save()
#             return Response({'code': '200', 'msg': '新建成功', 'data': ser.data})
#         else:
#             return Response({'code': '201', 'msg': '新建失败', 'erorrs': ser.errors})
#
#     # http://127.0.0.1:8000/books/pk/updata/
#     @action(methods=['put'], detail=True, url_path='updata')
#     def ewqeqwe(self, request, pk):
#         book = models.Books.objects.filter(pk=pk).first()
#         ser = BooksSerializers(instance=book, data=request.data)
#         if ser.is_valid():
#             ser.save()
#             return Response({'code': '200', 'msg': '修改成功', 'data': ser.data})
#         else:
#             return Response({'code': '201', 'msg': '修改失败', 'erorrs': ser.errors})
#
#     # http://127.0.0.1:8000/books/pk/delete/
#     @action(methods=['delete'], detail=True, url_path='delete')
#     def delete1(self, request, pk):
#         book = models.Books.objects.filter(pk=pk).first()
#         if book:
#             book.delete()
#             return Response({'code': '200', 'msg': '删除成功', })
#         else:
#             return Response({'code': '201', 'msg': '数据不存在', })



##########################################  GenericViewSet   ##########################################################
# class Books(GenericViewSet):
#     queryset = models.Books.objects.all()
#     serializer_class = BooksSerializers
# 
#     # 写了url_path,http://127.0.0.1:8000/books/getall
#     # 没写url_path,http://127.0.0.1:8000/books/get1   (函数名)
#     # m http://127.0.0.1:8000/books/getall/
#     @action(methods=['get'], detail=False, url_path='getall')
#     def getqeqweqweqw(self, request):
#         ser = self.get_serializer(instance=self.get_queryset(), many=True)
#         return Response(ser.data)
# 
#     # http://127.0.0.1:8000/books/add/
#     @action(methods=['post'], detail=False, url_path='add')
#     def post(self, request):
#         ser = self.get_serializer(data=request.data)
#         if ser.is_valid():
#             ser.save()
#             return Response({'code': '200', 'msg': '新建成功', 'data': ser.data})
#         else:
#             return Response({'code': '201', 'msg': '新建失败', 'erorrs': ser.errors})
# 
#     # http://127.0.0.1:8000/books/1/getone/
#     @action(methods=['get'], detail=True, url_path='getone')
#     def getqweq2321(self, request, pk):
#             book = self.get_object()
#             ser = self.get_serializer(instance=book, many=False)
#             return Response(ser.data)
# 
#     # http://127.0.0.1:8000/books/pk/updata/
#     @action(methods=['put'], detail=True, url_path='updata')
#     def put(self, request, pk):
#         book = self.get_object()
#         ser = self.get_serializer(instance=book, data=request.data)
#         if ser.is_valid():
#             ser.save()
#             return Response({'code': '200', 'msg': '修改成功', 'data': ser.data})
#         else:
#             return Response({'code': '201', 'msg': '修改失败', 'erorrs': ser.errors})
# 
#     # http://127.0.0.1:8000/books/pk/delete/
#     @action(methods=['delete'], detail=True, url_path='delete')
#     def delete(self, request, pk):
#         book = self.get_object()
#         if book:
#             book.delete()
#             return Response({'code': '200', 'msg': '删除成功', })
#         else:
#             return Response({'code': '201', 'msg': '数据不存在', })

posted @ 2022-06-19 14:18  春游去动物园  阅读(81)  评论(0编辑  收藏  举报