Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据方法返回不同的响应或数据-Django rest框架_Python_Django_Django Rest Framework_Httpresponse - Fatal编程技术网

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

Python 根据方法返回不同的响应或数据-Django rest框架,python,django,django-rest-framework,httpresponse,Python,Django,Django Rest Framework,Httpresponse,请帮忙。我需要做的是根据不同的方法得到不同的响应或数据,比如: class RubroViewSet(viewsets.ModelViewSet): queryset = Rubro.objects.all() serializer_class = RubroSerializer # POST def create(self, request): super().create(request) serializer = self.

请帮忙。我需要做的是根据不同的方法得到不同的响应或数据,比如:

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)
如果request.method==“POST”:

全部归还 创建的项目(包括最后一个)实际上只返回>创建的最后一个项目

如果request.method='PUT':

返回最后更新的项目

Views.py

class RubroViewSet(viewsets.ModelViewSet):
    queryset = Rubro.objects.all()
    serializer_class = RubroSerializer
models.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__'

使用Viewset.Viewset将是一种简单的方法。

或者使用@detail\u路线

    @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)

使用Viewset.Viewset将是一种简单的方法。

或者使用@detail\u路线

    @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)
1.方法: 你可以用收益率代替回报率。 这可能是支持

2.方式:

1.方法: 你可以用收益率代替回报率。 这可能是支持

2.方式:


实际上,viewset允许您在viewset中实现创建和更新方法,以控制不同类型请求的逻辑。在您的情况下,您可以这样做:

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)

实际上,viewset允许您在viewset中实现创建和更新方法,以控制不同类型请求的逻辑。在您的情况下,您可以这样做:

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)

文档中提供的示例是否足够?文档中提供的示例是否足够?