博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
restframework CBV试图的4种方式
阅读量:4952 次
发布时间:2019-06-12

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

day100 上节回顾 1 APIView流程 2 序列化组件(restframework)     1 #  自定义序列化组件         class BookSerializers(serializers.Serializer):             title=serializers.CharField()             price=serializers.CharField()             publishDate=serializers.DateField()             #   针对一对多             publish=serializers.CharField(source="publish.name")             publish_email=serializers.CharField(source="publish.email")             #   针对多对多             authors=serializers.SerializerMethodField()             def get_authors(self,obj):                data=[]                for i in obj.authors.all():                   temp=[]                   temp.append(i.pk)                   temp.append(i.name)                   data.append(temp)                return data            #  ModelSerializer序列化组件                  class BookSerializers(serializers.ModelSerializer):          class Meta:             model=Book             fields="__all__"          publish = serializers.CharField(source="publish.name")          authors=serializers.SerializerMethodField()          def get_authors(self,obj):             data=[]             for i in obj.authors.all():                temp=[]                temp.append(i.pk)                temp.append(i.name)                data.append(temp)             return data      2 5个接口          "books"   GET:获取所有数据                   POST:添加一条数据          "book/1"  GET:获取单条数据                   DELETE:删除一条数据                   PUT/PATCH:更新一条数据       3        (1) 功能之序列化:             book_list = Book.objects.all()             ps = BookSerializers(book_list, many=True)             ps.data             book_obj=Book.objects.filter(pk=pk).first()             bs=BookSerializers(book_obj,many=False)        (2) 校验字段与操作记录(ModelSerializer拥有)                # 添加数据                bs=BookSerializers(data=request.data)                if bs.is_valid(): #校验字段接口                   bs.save()     # 生成记录接口                   return Response(bs.data)    # 序列化接口                  # 更新数据                bs=BookSerializers(data=request.data,instance=book_obj)                if bs.is_valid(): #校验字段接口                   bs.save()     #更新记录接口                   return Response(bs.data)    # 序列化接口 3 视图     (1)         class AuthorView(APIView):            def get():               pass           def post():               pass        class AuthorDetailView(APIView):            def get():               pass           def delete():               pass              def put():                  pass      (2)  class AuthorView(CreateModelMixin,ListModelMixin,generics.GenericAPIView,):             queryset=Author.objects.all             serializer_class=AuthorSerializers             def get(self,request):                return self.list(request)             def post(self,request):                return self.create(request)       class AuthorDetailView(DestroyModelMixin,UpdateModelMixin,RetrieveModelMixin,generics.GenericAPIView,):             queryset = Author.objects.all             serializer_class = AuthorSerializers             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)       (3)   class AuthorView(generics.ListCreateAPIView):             queryset=Author.objects.all             serializer_class=AuthorSerializers          class AuthorDetailView(generics.RetrieveUpdateDestroyAPIView):             queryset = Author.objects.all             serializer_class = AuthorSerializers      (4)   class AuthorModelView(ModelViewSet):             queryset=Author.objects.all()             serializer_class=AuthorSerializers     ViewSetMixIn     第4种的url要传参数,注意  如:       url(r'^publishs/$',views.PublishView.as_view({"get":"list","post":"create"})),    url(r'^publishs/(?P
\d+)/$',views.PublishView.as_view({"put":"update","get":"retrieve","delete":"destroy"}))
4 解析器     class APIView:         parser_classes = api_settings.DEFAULT_PARSER_CLASSES

转载于:https://www.cnblogs.com/zhaoweihang/p/9407876.html

你可能感兴趣的文章
Ubuntu候选栏乱码
查看>>
基于SSH框架的在线考勤系统开发的质量属性
查看>>
jpg图片在IE6、IE7和IE8下不显示解决办法
查看>>
delphi之模糊找图
查看>>
Javascript模块化编程的写法
查看>>
大华门禁SDK二次开发(二)-SignalR应用
查看>>
oracle 使用job定时自动重置sequence
查看>>
集成百度推送
查看>>
在项目中加入其他样式
查看>>
在使用Kettle的集群排序中 Carte的设定——(基于Windows)
查看>>
【原】iOS中KVC和KVO的区别
查看>>
OMAPL138学习----DSPLINK DEMO解析之SCALE
查看>>
IoC的基本概念
查看>>
restframework CBV试图的4种方式
查看>>
大图居中,以1920px为例
查看>>
Python3 图片转字符画
查看>>
[C陷阱和缺陷] 第7章 可移植性缺陷
查看>>
人需要治愈
查看>>
linux中configure文件默认执行结果所在位置
查看>>
Spring MVC例子
查看>>