django-rest-framework笔记-类视图篇
2017-09-13 21:51
489 查看
snippet/url.py
一、使用基本类视图API
snippet/views.py
s
二、使用Mixins
snippet/views.py
三、使用generator基础视图类
snippet/views.py
from django.conf.urls import url from rest_framework.urlpatterns import format_suffix_patterns from snippets import views urlpatterns = [ url(r'^snippets/$', views.SnippetList.as_view()), url(r'^snippets/(?P<pk>[0-9]+)/$', views.SnippetDetail.as_view()), ] urlpatterns = format_suffix_patterns(urlpatterns)
一、使用基本类视图API
snippet/views.py
from snippets.models import Snippet from snippets.serializers import SnippetSerializer from django.http import Http404 from rest_framework.views import APIView from rest_framework.response import Response from rest_framework import status class SnippetList(APIView): """ List all snippets, or create a new snippet. """ 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 SnippetDetail(APIView): """ Retrieve, update or delete a snippet instance. """ def get_object(self, pk): try: return Snippet.objects.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)
s
二、使用Mixins
snippet/views.py
from snippets.models import Snippet from snippets.serializers import SnippetSerializer from rest_framework import mixins from rest_framework import generics class SnippetList(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 SnippetDetail(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)
三、使用generator基础视图类
snippet/views.py
from snippets.models import Snippet from snippets.serializers import SnippetSerializer from rest_framework import generics class SnippetList(generics.ListCreateAPIView): queryset = Snippet.objects.all() serializer_class = SnippetSerializer class SnippetDetail(generics.RetrieveUpdateDestroyAPIView): queryset = Snippet.objects.all() serializer_class = SnippetSerializer
相关文章推荐
- django-rest-framework指南(3):Class Based Views(类视图)
- django-rest-framework视图层的使用(二)
- django-rest-framework之基于类的视图
- django-rest-framework笔记-请求与响应篇
- Django 之REST framework学习6:视图集合类和路由器(ViewSets & Routers)
- DjangoRestFramework实践笔记
- django-rest-framework笔记-序列化篇
- Django REST framework笔记一之简易JsonAPI搭建(可使用)
- Django-Rest-Framework 教程: 快速入门
- Django-Rest-Framework 教程: 1. 序列化 (Serialization)
- Django REST Framework Tutorial 4:认证与权限(中文版教程)by hillfree
- Django-Rest-Framework 入门
- django-rest-framework序列化的使用(一)
- django上课笔记2-视图CBV-ORM补充-Django的自带分页-Django的自定义分页
- Django 之REST framework学习5:关联性和超链接API(Relationships & Hyperlinked APIs)
- django 中api使用之django-rest-framework
- Django serializers 序列化 rest_framework
- Django REST framework的各种技巧——2.serializer
- django rest framework使用django-filter
- django rest_framework 学习