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)
效果如上个文档的图片