
案例-使用APIVIEw改写RestAPI
# vIEws.pyfrom rest_framework.vIEws import APIVIEwfrom rest_framework import statusfrom django.http import http404from booktest.serializers import BookInfoSerializer# /books/class BookListVIEw(APIVIEw): """ 获取所有图书、增加图书 """ def get(self,request): """ 获取所有的图书数据 """ queryset = BookInfo.objects.all() # 序列化所有图书数据 serializer = BookInfoSerializer(queryset,many=True) return Response(serializer.data) def post(self,request): """ 新增一个图书数据 """ # 反序列化-数据校验 serializer = BookInfoSerializer(data=request.data) serializer.is_valID(raise_exception=True) # 反序列化-数据保存(save内部会调用序列化器类的create方法) serializer.save() return Response(serializer.data,status=status.http_201_CREATED)# /books/(?P<pk>\d+)/class BookDetailVIEw(APIVIEw): """ 获取、修改、删除指定图书 """ def get(self,request,pk): """ 获取指定图书 """ try: book = BookInfo.objects.get(pk=pk) except BookInfo.DoesNotExist: raise http404 # 将图书数据进行序列化 serializer = BookInfoSerializer(book) return Response(serializer.data) def put(self,pk): """ 修改指定图书 """ try: book = BookInfo.objects.get(pk=pk) except BookInfo.DoesNotExist: raise http404 # 反序列化-数据校验 serializer = BookInfoSerializer(book,data=request.data) serializer.is_valID(raise_exception=True) # 反序列化-数据保存(save内部会调用序列化器类的update方法) serializer.save() return Response(serializer.data) def delete(self,pk): """ 删除指定图书: """ try: book = BookInfo.objects.get(pk=pk) except BookInfo.DoesNotExist: raise http404 book.delete() return Response(status=status.http_204_NO_CONTENT)总结
以上是内存溢出为你收集整理的Django课程讲义 APIView全部内容,希望文章能够帮你解决Django课程讲义 APIView所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)