restframework 视图

一、逻辑封装

    path('author/', views.AuthorView.as_view()),
    path('author/<pk>/', views.AuthorDetailView.as_view()),
路由
from rest_framework import mixins, generics
"""
本质:封装逻辑
1.return 父类的方法
2.queryset serializer_class 两个参数必要(看源码)
3.mixins.ListModelMixin和mixins.CreateModelMixin 没有的方法到generics.GenericAPIView去找
4.url的参数要改成pk,根据get_obj() 源码
"""


class AuthorView(mixins.ListModelMixin, mixins.CreateModelMixin, generics.GenericAPIView):
    queryset = Author.objects.all()
    # print(queryset)
    serializer_class = AuthorModelSerializer

    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 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(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)
视图

猜你喜欢

转载自www.cnblogs.com/wt7018/p/11461742.html
今日推荐