#views.py
from django.shortcuts import render
from .serializers import SuperviseSerializers
from rest_framework.views import APIView
from .models import Supervise
from rest_framework.response import Response
from rest_framework import status
# Create your views here.
class SuperviseView(APIView):
"""督查视图"""
def get(self,request):
supervises = Supervise.objects.all()
ser = SuperviseSerializers(instance=supervises,many=True)
return Response(ser.data,status=status.HTTP_200_OK)
def post(self,request):
supervises = SuperviseSerializers(data=request.data)
try:
supervises.is_valid(raise_exception=True)
supervises.save()
return Response(supervises.data,status=status.HTTP_201_CREATED)
except Exception as e:
return Response(supervises.errors)
class SuperviseDetailView(APIView):
def get(self,request,id):
supervises = Supervise.objects.get(id=id)
ser = SuperviseSerializers(instance=supervises)
return Response(ser.data,status=status.HTTP_200_OK)
def put(self,request,id):
supervise = Supervise.objects.get(id=id)
ser = SuperviseSerializers(instance=supervise,data=request.data)
try:
ser.is_valid(raise_exception=True)
ser.save()
return Response(ser.data,status=status.HTTP_200_OK)
except Exception as e:
return Response(ser.errors)
def delete(self,request,id):
supervise = Supervise.objects.get(id=id).delete()
return Response(supervise,status=status.HTTP_200_OK)
# GenericAPIView版本
# views.py
from rest_framework.generics import GenericAPIView
class SuperviseView(GenericAPIView):
queryset = Supervise.objects
serializer_class = SuperviseSerializers
def get(self,request):
serializer = self.get_serializer(instance=self.get_queryset(),many=True)
return Response(serializer.data)
def post(self,request):
serializer = self.get_serializer(data = request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
else:
return Response(serializer.errors)
class SuperviseDetailView(GenericAPIView):
queryset = Supervise.objects
serializer_class = SuperviseSerializers
def get(self,request,pk):
serializer = self.get_serializer(instance=self.get_object())
return Response(serializer.data)
def put(self,request,pk):
serializer = self.get_serializer(instance=self.get_object(),data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
else:
return Response(serializer.errors)
def delete(self,request,pk):
self.get_object().delete()
return Response()
# Mixin版本
# views.py
from rest_framework.mixins import CreateModelMixin,ListModelMixin,RetrieveModelMixin,DestroyModelMixin,UpdateModelMixin
class SuperviseView(GenericAPIView,ListModelMixin,CreateModelMixin):
queryset = Supervise.objects
serializer_class = SuperviseSerializers
def get(self,request):
return self.list(request)
def post(self,request):
return self.create(request)
class SuperviseDetailView(GenericAPIView,RetrieveModelMixin,DestroyModelMixin,UpdateModelMixin):
queryset = Supervise.objects
serializer_class = SuperviseSerializers
def get(self,request,pk):
return self.retrieve(request)
def put(self,request,pk):
return self.update(request)
def delete(self,request,pk):
return self.destroy(request)
from rest_framework.generics import ListCreateAPIView,RetrieveUpdateDestroyAPIView
class SuperviseView(ListCreateAPIView):
queryset = Supervise.objects
serializer_class = SuperviseSerializers
class SuperviseDetailView(RetrieveUpdateDestroyAPIView):
queryset = Supervise.objects
serializer_class = SuperviseSerializers
# views.py
# 最终版
from rest_framework.viewsets import ModelViewSet
class SuperviseView(ModelViewSet):
queryset = Supervise.objects
serializer_class = SuperviseSerializers
##########################################################
# urls.py
from rest_framework.routers import DefaultRouter
urlpatterns = [
]
router = DefaultRouter()
router.register('super',views.SuperviseView)
urlpatterns += router.urls