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()),

浙公网安备 33010602011771号