Django没有PUT方法

时间:2018-03-27 18:26:12

标签: django django-rest-framework

我的django休息框架视图存在问题。 PUT方法正在调用GET。所以我无法更新任何对象。有些观点正在发挥作用,现在却没有。这是一个观点的例子:

    class BiduleEditView(generics.RetrieveUpdateAPIView):
      """A view that allows to edit a bidule """
        serializer_class = BiduleEditSerializer
        queryset = Bidule.objects.filter(is_active=True)

有人有想法吗?             lookup_fields =' pk'

以下是相应的网址:

    url(r'^bidule/(?P<pk>[a-z0-9\-]+)/edit/$', views.BiduleEditView.as_view()),

这是序列化器:

    class BiduleEditSerializer(serializers.ModelSerializer):
         class Meta:
               model=Bidule
               fields = '__all__'

我也覆盖了put方法。它不起作用。我在put方法的开头写了一个print。终端没有打印件。这意味着它不执行put方法。

1 个答案:

答案 0 :(得分:0)

您可以将put方法明确地放入您的视图集中,如下所示。从现在开始,您可以定义在更新对象时要执行的任何操作

class BiduleEditView(generics.RetrieveUpdateAPIView):
    """
        A view that allows to edit a bidule
    """
    serializer_class = BiduleEditSerializer
    queryset = Bidule.objects.filter(is_active=True)
    lookup_field = 'pk'

    def put(self, request, *args, **kwargs):
        return self.update(request, *args, **kwargs)

    # ... some other methods