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': '数据不存在', })