博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
restframework视图三部曲
阅读量:4687 次
发布时间:2019-06-09

本文共 2087 字,大约阅读时间需要 6 分钟。

mixins的玩法

from rest_framework import mixinsfrom rest_framework import genericsclass AuthorView(mixins.CreateModelMixin, mixins.ListModelMixin, generics.GenericAPIView):    # 初始化两个变量    queryset = Author.objects.all()    serializer_class = AuthorModelSerializer    def get(self, request, *args, **kwargs):        return self.list(self, request, *args, **kwargs)    def post(self, request, *args, **kwargs):        return self.create(self, request, *args, **kwargs)class AuthorDetailView(mixins.RetrieveModelMixin, mixins.UpdateModelMixin, mixins.DestroyModelMixin, generics.GenericAPIView):    # 初始化两个变量    queryset = Author.objects.all()    serializer_class = AuthorModelSerializer    def get(self, request, *args, **kwargs):        return self.retrieve(self, request, *args, **kwargs)    def put(self, request, *args, **kwargs):        return self.update(self, request, *args, **kwargs)    def delete(self, request, *args, **kwargs):        return self.destroy(self, request, *args, **kwargs)

generic的玩法

from rest_framework import mixinsfrom rest_framework import genericsclass AuthorView(generics.ListCreateAPIView):    queryset = Author.objects.all()    serializer_class = AuthorModelSerializerclass AuthorDetailView(generics.RetrieveUpdateDestroyAPIView):    queryset = Author.objects.all()    serializer_class = AuthorModelSerializer

终极玩法

views.py

from rest_framework import viewsetsclass AuthorViewSet(viewsets.ModelViewSet):    queryset = Author.objects.all()    serializer_class = AuthorModelSerializer

urls.py

# 方式一,自己手写urlpatterns = [    url(r'^authors/$', views.AuthorViewSet.as_view({
"get": "list", "post": "create"}), name="author_list"), url(r'^authors/(?P
\d+)/$', views.AuthorViewSet.as_view({
"get": "retrieve", "put": "update", "delete": "destroy"}), name="author_detail"),]# 方式二,针对上面的两条url的分发from rest_framework import routersrouters = routers.DefaultRouter()routers.register("authors", views.AuthorViewSet) # authors是url前缀urlpatterns = [ url(r'', include(routers.urls)), (等同于方式一的写法)]

 

转载于:https://www.cnblogs.com/sunch/p/9993633.html

你可能感兴趣的文章