Django REST 프레임워크의 APIView

11251 단어 django
  • 프레임워크의 APIView는 REST 프레임워크의 모든 뷰의 기본 클래스입니다.이것은django의View를 계승한다.
  • 리퀘스트 대상과reposen은django의 리퀘스트와HttpRequest와 다르다.
  • request.data는 해석된 요청체 데이터를 되돌려받을 수 있음
  • request.query_params는 검색 문자열의 데이터와django의request를 얻을 수 있습니다.GET는 똑같아요.
  • Response는 json과 Browsable API 렌더링을 제공합니다.
  • 서열화와 반서열화를 구분하는 것은 코드에서 서열화기의 참조에 의해 결정된다
  •     (data)     ,    (data=data)     。
                  json ,    json    
    
    

    restful API 설계
    라우팅:
     path("books/",views.BooksView.as_view()),
     re_path("books/(?P\d+)/",views.BookView.as_view()),
    
  • 보기:
  • class BooksView(APIView):
        def get(self,request):
            query_param = request.query_params
            item = request.GET #    query_param  
            print(item)
            print(query_param)
            queryset=BookInfo.objects.all()
            serializer = BookInfoSerializer(queryset,many=True) #    
            return Response(serializer.data)
    
        def post(self,request):
            data = request.data #                
            item1 = request.query_params
            print(item1)
            serializer = BookInfoSerializer(data=data) #       
            if serializer.is_valid() is False:
                print(serializer.errors) #          
            data = serializer.validated_data  #            
            print(data)
            BookInfo.objects.create(**data) #     
            return Response(serializer.data)
    class BookView(APIView):
        def get(self,request,pk):
            try:
                data = BookInfo.objects.get(pk=pk)
            except BookInfo.DoesNotExist:
                return Response(status=404)
            serializer = BookInfoSerializer(data)
            return Response(serializer.data)
        def put(self,request,pk):
            try:
                book = BookInfo.objects.get(pk=pk)
            except BookInfo.DoesNotExist:
                return Response("this book is not exist",status=404)
            data = request.data #     
            serializer = BookInfoSerializer(data=data) #    
            serializer.is_valid(raise_exception=True)
            data=serializer.validated_data
            book.btitle = data["btitle"]
            bpub_date = datetime.strptime(str(data.get("bpub_date")), "%Y-%m-%d").date()
            book.bpub_date = bpub_date
            book.save()
            return Response(data,status=200)
        def delete(self,request,pk):
            try:
                book = BookInfo.objects.get(pk=pk)
            except BookInfo.DoesNotExist:
                return Response("this book is not exist",status=404)
            book.delete()
    
            return Response("The book has been deleted",status=200)
    
    

    좋은 웹페이지 즐겨찾기