周末作业 7/11

1 视图类继承GenericAPIView,get方法,post方法,用的序列化类不一样

views.py

from app01.utils.MGenricAPIView import MGenricAPIView

class BookView3(MGenricAPIView):
    # queryset要传queryset对象,查询了所有的图书
    # serializer_class使用哪个序列化类来序列化这堆数据
    queryset = Book.objects.all()
    serializer_class = {"get": BookSerializer2, "post": BookSerializer}

    def get(self, request):
        book_list = self.get_queryset()
        serializer = self.get_serializer(book_list,many=True)
        return Response(serializer.data)

    def post(self, request):
        serializer = self.get_serializer(data=request.data)

        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)
        else:
            print(serializer.data)
            print(serializer.errors)

            return Response({'status': 101, 'msg': '添加失败'})

MGenricAPIView.py

from rest_framework.generics import GenericAPIView


class MGenricAPIView(GenericAPIView):
    def get_serializer_class(self):
        # print(type(self.serializer_class),self.serializer_class.get("get"))
        data_dic = self.serializer_class
        if self.request.method == 'POST':
            self.serializer_class = data_dic.get("post")
            return self.serializer_class
        self.serializer_class = data_dic.get("get")
        return self.serializer_class

urls.py

from django.contrib import admin
from django.urls import path
from app01 import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('books3/', views.BookView3.as_view()),
]

 

posted @ 2020-07-12 23:09  耗油炒白菜  阅读(128)  评论(0编辑  收藏  举报