Django Rest:如何使用{pk}禁用POST api

Django Rest:如何使用{pk}禁用POST api,django,django-rest-framework,swagger-ui,Django,Django Rest Framework,Swagger Ui,如何使用序列化程序从api中删除[POST]/api/contact/{pk}/?(去掉第二个API) 我的序列化程序定义如下: class ContactSerializer(serializers.ModelSerializer): class Meta: model = Contact fields = ('chatuser', 'contact', 'is_blocked') class ContactViewSet(mixins.Create

如何使用序列化程序从api中删除
[POST]/api/contact/{pk}/
?(去掉第二个API) 我的序列化程序定义如下:

class ContactSerializer(serializers.ModelSerializer):

    class Meta:
        model = Contact
        fields = ('chatuser', 'contact', 'is_blocked')
class ContactViewSet(mixins.CreateModelMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet):
    queryset = Contact.objects.all()
    serializer_class = ContactSerializer
我的视图集如下所示:

class ContactSerializer(serializers.ModelSerializer):

    class Meta:
        model = Contact
        fields = ('chatuser', 'contact', 'is_blocked')
class ContactViewSet(mixins.CreateModelMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet):
    queryset = Contact.objects.all()
    serializer_class = ContactSerializer

您是否可以使用ReadOnlyModelViewset?从文档中:

ReadOnlyModelViewSet类也继承自GenericAPIView。与ModelViewSet一样,它还包括各种操作的实现,但与ModelViewSet不同,它只提供“只读”操作、.list()和.retrieve()

不过这有点奇怪,因为GenericViewSet不应该给您任何开箱即用的操作,您应该只获得ModelViewSet的帖子

GenericViewSet类继承自GenericAPIView,并提供默认的get_对象、get_queryset方法和其他通用视图基本行为集,但默认情况下不包括任何操作

这可能意味着其中一个mixin正在为您提供额外的操作,请参阅:

为了使用GenericViewSet类,您将重写该类,并在所需的mixin类中进行mixin,或者显式定义操作实现


如果您可以检查这些mixin的定义,或者将它们发布到这里,也可以尝试在没有任何mixin的情况下使用ReadOnlyModelViewSet,看看您的情况如何

您是否可以使用ReadOnlyModelViewset?从文档中:

ReadOnlyModelViewSet类也继承自GenericAPIView。与ModelViewSet一样,它还包括各种操作的实现,但与ModelViewSet不同,它只提供“只读”操作、.list()和.retrieve()

不过这有点奇怪,因为GenericViewSet不应该给您任何开箱即用的操作,您应该只获得ModelViewSet的帖子

GenericViewSet类继承自GenericAPIView,并提供默认的get_对象、get_queryset方法和其他通用视图基本行为集,但默认情况下不包括任何操作

这可能意味着其中一个mixin正在为您提供额外的操作,请参阅:

为了使用GenericViewSet类,您将重写该类,并在所需的mixin类中进行mixin,或者显式定义操作实现


如果您可以检查这些mixin的定义,或者将它们发布到这里,也可以尝试在没有任何mixin的情况下使用ReadOnlyModelViewSet,看看您的情况如何

添加与该视图相关的url配置。我认为您的一些配置是错误的。post
/api/contact/{pk}
不应该有端点。最有可能的是,放置或修补这些URL是从路由器生成的,我没有设置它。很抱歉,回复太晚了。。。我倾向于转储这个框架,然后自己做……添加相对于该视图的url配置。我认为您的一些配置是错误的。post
/api/contact/{pk}
不应该有端点。最有可能的是,放置或修补这些URL是从路由器生成的,我没有设置它。很抱歉,回复太晚了。。。我倾向于转储这个框架,然后自己做……对,使用一个Mixin,它派生vom ModelViewSet,使得
ReadOnlyModelViewSet
什么都不做。谢谢你指出这一点!对,使用派生vom模型视图集的Mixin使
ReadOnlyModelViewSet
不做任何事情。谢谢你指出这一点!