REST_FRAMEWORK加深记忆-三种CLASS VIEW的进化史
2016-02-17 08:52
316 查看
一层一层的封装,又能到底层,就会有全局感啦。。。
from rest_framework import status from rest_framework.response import Response from snippets.models import Snippet from snippets.serializers import SnippetSerializer from django.http import Http404 from rest_framework.views import APIView from rest_framework import mixins from rest_framework import generics class SnippetListOld(APIView): def get(self, request, format=None): snippets = Snippet.objects.all() serializer = SnippetSerializer(snippets, many=True) return Response(serializer.data) def post(self, request, format=None): serializer = SnippetSerializer(data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) class SnippetDailOld(APIView): def get_object(self, pk): try: return Snippet.object.get(pk=pk) except Snippet.DoesNotExist: raise Http404 def get(self, request, pk, format=None): snippet = self.get_object(pk) serializer = SnippetSerializer(snippet) return Response(serializer.data) def put(self, request, pk, format=None): snippet = self.get_object(pk) serializer = SnippetSerializer(snippet, data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) def delete(self, request, pk, format=None): snippet = self.get_object(pk) snippet.delete() return Response(status=status.HTTP_204_NO_CONTENT) class SnippetListOld2(mixins.ListModelMixin, mixins.CreateModelMixin, generics.GenericAPIView): queryset = Snippet.objects.all() serializer_class = SnippetSerializer def get(self, request, *args, **kwargs): return self.list(request, *args, **kwargs) def post(self, request, *args, **kwargs): return self.create(request, *args, **kwargs) class SnippetDetailOld2(mixins.RetrieveModelMixin, mixins.UpdateModelMixin, mixins.DestroyModelMixin, generics.GenericAPIView): queryset = Snippet.objects.all() serializer_class = SnippetSerializer def get(self, request, *args, **kwargs): return self.retrieve(request, *args, **kwargs) def put(self, request, *args, **kwargs): return self.update(request, *args, **kwargs) def delete(self, request, *args, **kwargs): return self.destroy(request, *args, **kwargs) class SnippetList(generics.ListCreateAPIView): queryset = Snippet.objects.all() serializer_class = SnippetSerializer class SnippetDetail(generics.RetrieveUpdateDestroyAPIView): queryset = Snippet.objects.all() serializer_class = SnippetSerializer
相关文章推荐
- xpath读取xml文档
- Modifi
- Zabbix agentd和 Zabbix Server 开机自动运行实现方法
- 【iOS开发-101】解决方案:The file * couldn't be opened because you don't have permission to view it,ios-101
- 验证是否是 邮箱||手机号
- linux----用户与whoami
- Android Clipboard(复制/剪贴板)
- oracle系统包—-dbms_output用法
- 圆形动态分配图
- hbase 自定义 endpoint coprocessor
- 2016年第一包“ missing ios development signing identity for ....”
- Bootstrap布局组件应用实例讲解
- 共有21款 jQuery 树形控件开源软件,第1页
- PLS-00103 需要下列之一时: :=
- Mac上常用工具
- AngularJS入门教程:日期格式化
- php脚本运行时的超时机制详解
- 整理Java编程中字符串的常用操作方法
- 电商要突围,请“快速迭代”
- FZU 1686 神龙的难题(DLX反复覆盖)