代码之家  ›  专栏  ›  技术社区  ›  Gerald E.

根据方法返回不同的响应或数据-Django rest框架

  •  2
  • Gerald E.  · 技术社区  · 7 年前

    如有要求。方法==“POST”:

    全部返回

    否则,如果需要。方法==“PUT”:

    返回上次更新的项目

    class RubroViewSet(viewsets.ModelViewSet):
        queryset = Rubro.objects.all()
        serializer_class = RubroSerializer
    

    模型。py公司

    class Rubro(models.Model):
        nombre = models.CharField(max_length=50)
        descripcion = models.TextField()
    
        class Meta:
            verbose_name_plural = 'Rubros'
            db_table = "core_rubros"
    
        def __str__(self):
            return self.nombre
    

    序列化程序。py公司

    class RubroSerializer(serializers.ModelSerializer):
        class Meta:
            model = Rubro
            fields = '__all__'
    
    3 回复  |  直到 4 年前
        1
  •  3
  •   Monish K Nair    7 年前

    使用视图集。Viewset将是一种简单的方法。 http://www.django-rest-framework.org/api-guide/viewsets/

    或使用@detail\u route()

        @detail_route(methods=['post'])
        def some_method(self, request):
            serializer = RubroSerializer(data=request.data)
            if serializer.is_valid():
                return Response({'status': 'success'})
            else:
                return Response(serializer.errors,
                            status=status.HTTP_400_BAD_REQUEST)
    
        2
  •  2
  •   neverwalkaloner    7 年前

    实际上,viewset允许您实现 create update

    class RubroViewSet(viewsets.ModelViewSet):
        queryset = Rubro.objects.all()
        serializer_class = RubroSerializer
    
        # POST
        def create(self, request):
            super().create(request)
            serializer = self.serializer(self.queryset, many=True)
            return Response(serializer.data, status=status.HTTP_201_CREATED)
    
        # PUT
        def update(self, request, pk=None):
            return super().update(request, pk)
    
        3
  •  1
  •   R Palanivel-Tamilnadu India    7 年前

    1.方式: 你可以用“收益率”代替“回报率”。

    2、方式:

    def __str__(self):
        for n in self:
             return self.n