23 一级视图

之前的 

  View 来自: from django.views import View

  获取get参数:request.get

  获取post参数: request.body 获取json格式 / request.post 获取文本形式

  返回响应: 

  return http.JsonResponse(serializers.data,safe=False)
  来自 from django import http

现在的

  APIView 来自:from rest_framework.views import APIView

  获取get参数:request.query_params

  获取post参数:request.data

  返回响应:

  return Response([{'text':'nihao'}],status=status.HTTP_404_NOT_FOUND)

  来自 :

    from rest_framework.response import Response
    from rest_framework import status

    其中 stateus 是返回的状态码 从stateus是从库中获取状态码 更加完整

使用

view.py

class BookInfoView(APIView):
    def get(self,request):
        books = BookInfo.objects.all()
        serializers = BookInfoSerializer(instance=books,many=True)
        return Response(serializers.data)
    def post(self,request):
        book = request.data
        serializer = BookInfoSerializer(data=book)
        serializer.is_valid(raise_exception=True)
        serializer.save()
        return Response(serializer.data)

class BookInfoDetailView(APIView):
    def get(self,request,id):
        # 通过id获取
        book = BookInfo.objects.get(id=id)

        # 返回数据
        serializers = BookInfoSerializer(instance=book)
        return Response(serializers.data,status=status.HTTP_200_OK)

    # 更新单个
    def put(self,request,id):
        # 获取更新结果和根据id获取该项
        book_data = request.data
        book = BookInfo.objects.get(id=id)
        serializer = BookInfoSerializer(instance=book,data=book_data)
        serializer.is_valid(raise_exception=True)
        serializer.save()

        return Response(serializer.data,status=status.HTTP_201_CREATED)

    # 删除单个
    def delete(self,request,id):
        BookInfo.objects.get(id=id).delete()
        return Response(status=status.HTTP_204_NO_CONTENT)

urls.py

path('books/',views.BookInfoView.as_view()),
path('books/<int:id>', views.BookInfoDetailView.as_view()), 

  

 

posted @ 2021-11-04 13:40  彡心如止水彡  阅读(47)  评论(0)    收藏  举报