• day100-序列化组件


    3 序列化组件
    
    
    class BookSerializer(serializers.Serializer):
    
        title = serializers.CharField( max_length=32)
        price =serializers.DecimalField(max_digits=5,decimal_places=2)
    
        # 一对多字段
        publish_email=serializers.CharField(max_length=32,source="publish.email")
        publish_name=serializers.CharField(max_length=32,source="publish.name")
    
        # 多对多字段
        # authors=serializers.CharField(max_length=32,source="authors.all")
        authors=serializers.SerializerMethodField()
        def get_authors(self,obj):
            ret=[]
            for i in obj.authors.all():
                ret.append({"name":i.name,"age":i.name})
            return ret
            
    '''
    
    
    serializer=BookSerializer(book_list,many=True)
    serializer.data:
    
    temp=[]
    for obj in book_list:
        temp.append({
                 "title":obj.title,
                 "price":obj.price,
                 "publish":obj.publish.email,
             if 字段SerializerMethodField:
                 "authors":get_authors(obj)
        })
        
        
    json.dumps(temp)
    
    '''
    
    class BookSerializer(serializers.ModelSerializer):
        class Meta:
            model=Book
            # fields=["title","price"]
            fields="__all__"
    
    
    class BookView(APIView):
    
    
    
        def get(self,request):
            book_list=Book.objects.all()
            serializer=BookSerializer(book_list,many=True)
            
            return Response(serializer.data)
            
            
        def post(self,request):
    
            print(request.data)
    
            serializer=BookSerializer(data=request.data,many=False)
    
            if serializer.is_valid():
                serializer.save() # create操作
    
                return Response(serializer.data) # 序列化提交数据
            else:
                return Response(serializer.errors) # 序列化错误信息
    
       
    
    
    今日内容:
     
        1 序列化组件
        
           序列化:    queryset------>[{},{},{}]
                       obj     ------>{}
        
        2 视图组
        
                class AuthorsView(ModelViewSet):
                        queryset = Author.objects.all()
                        serializer_class = AuthorSerializer
     
            
                #url(r'^authors/$', views.AuthorsView.as_view({"get":"list","post":"create"})),
                #url(r'^authors/$', ViewSetMixin.as_view({"get":"list","post":"create"})),
                #url(r'^authors/$', ViewSetMixin.view),
                一旦用户访问,get访问authors/:
                ViewSetMixin.view(reqeust):
                             for method, action in actions.items(): # {"get":"list","post":"create"}
                                    handler = getattr(self, action) #  handler===self.list
                                    setattr(self, method, handler)  #  self.get=self.list
    
                             return self.dispatch(request, *args, **kwargs)    
                             #
                             APIView.dispatch(request):
                                                     
                                                      handler = getattr(self, request.method.lower()) # self.list
                                                      response = handler(request, *args, **kwargs)    
                                                      #     def list(self.request):
               `                                      #            return .....
                                                                
                                                      return response
                                                                
    
    
                ###################
                
                #url(r'^authors/(?P<pk>d+)/', views.AuthorsView.as_view({"get":"retrieve","delete":"destroy","put":"update"})),
                #url(r'^authors/$', ViewSetMixin.as_view({"get":"retrieve","delete":"destroy","put":"update"})),
                #url(r'^authors/$', ViewSetMixin.view),
                一旦用户访问,get访问authors/1:
                ViewSetMixin.view(reqeust):
                             for method, action in actions.items(): # {"get":"retrieve","delete":"destroy","put":"update"}
                                    handler = getattr(self, action) #  handler===self.retrieve    handler=== destroy    handler===update
                                    setattr(self, method, handler)  #  self.get=self.retrieve    self.delete=self.destroy   self.put=self.update
    
                             return self.dispatch(request, *args, **kwargs)    
                             #
                             APIView.dispatch(request):
                                                     
                                                      handler = getattr(self, request.method.lower()) # self.retrieve
                                                      response = handler(request, *args, **kwargs)    
                                                      #     def retrieve(self.request):
               `                                      #            return .....
                                                                
                                                      return response
  • 相关阅读:
    OpenStreetMap/Google/百度/Bing瓦片地图服务(TMS)
    【APM】Pinpoint 监控告警(三)
    【APM】Pinpoint 使用教程(二)
    【APM】Pinpoint 安装部署(一)
    【HBase】HBase 单机版安装及使用
    【SpringBoot】SpringBoot快速入门(一)
    【Java】Swagger快速入门
    【WebSocket】WebSocket快速入门
    【JS】AJAX跨域-被调用方与调用方解决方案(二)
    【JS】AJAX跨域-JSONP解决方案(一)
  • 原文地址:https://www.cnblogs.com/wuchenggong/p/9677551.html
Copyright © 2020-2023  润新知