0
点赞
收藏
分享

微信扫一扫

5.使用类视图

时光已翩然轻擦 2022-04-04 阅读 31
django
from django import views
from django.http import HttpResponse
from django.shortcuts import render
from .models import Idc
from .serializers import IdcSerializer

from rest_framework.decorators import api_view
from rest_framework import status
from rest_framework.response import Response

from rest_framework.reverse import reverse    

@api_view(["GET"])
def api_root(request,format=None,*args,**kwargs):
    return Response(
        {
            "idcs" : reverse("idcs-list",request=request,format=format)
        }
    )

    
###### 版本三,使用类视图
from rest_framework.views import APIView
from django.http import Http404
class IdcList(APIView):
    def get(self,request,format=None):
        queryset = Idc.objects.all()
        serializer = IdcSerializer(queryset,many=True)
        return Response(serializer.data)
    def post(self,request,format=None):
        serializer = IdcSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data,status=status.HTTP_201_CREATED)
        return Response(serializer.data,status=status.HTTP_400_BAD_REQUEST)



class IdcDetail(APIView):
    def get_objects(self,pk):
        try:
            return Idc.objects.get(pk=pk)
        except Idc.DoesNotExist:
            raise Http404
    def get(self,request,pk,format=None):
        idc = self.get_objects(pk)
        serializer = IdcSerializer(idc)
        return Response(serializer.data)    
    def put(self,request,pk,format=None):
        idc = self.get_objects(pk)
        serializer = IdcSerializer(idc,data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)
        return Response(serializer.errors,status=status.HTTP_404_NOT_FOUND)
    
    def delete(self,request,pk,format=None):
        idc = self.get_objects(pk)
        idc.delete()
        return HttpResponse(status=status.HTTP_204_NO_CONTENT)

路由层
from django.conf.urls import url

from . import views

版本三

from rest_framework.urlpatterns import format_suffix_patterns
urlpatterns = [
   url("^$",views.api_root),
   url("^idcs/$",views.IdcList.as_view(),name="idcs-list"),
   url("^idcs/(?P<pk>[0-9]+)/$",views.IdcDetail.as_view(),name="idc_detail"),
]
urlpatterns = format_suffix_patterns(urlpatterns)

效果如上个文档的图片

举报

相关推荐

0 条评论