DRF - 创建多个 PATCH 请求的端点

2024-03-28 10:16:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我想为补丁请求创建多个端点。在

例如

class CityViewSet(viewsets.ModelViewSet):
    """
    API endpoint that allows city to be viewed or edited.
    """
    authentication_classes = (TokenAuthentication,)
    permission_classes = ()
    queryset = City.objects.filter(active=True)
    serializer_class = CitySerializer

class CitySerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = City
        fields = ('id', 'name', 'is_metro', 'is_village', 'active')

    def update(self, instance, validated_data):
        for attr, value in validated_data.items():
            if not isinstance(value, (list,dict)):
                setattr(instance, attr, value)

        instance.save()
        return instance

在网址.py在

^{pr2}$

我可以创建多个路由器,最终只转到这个视图集的补丁请求吗?在update方法中,基于url,我将决定要做什么。在


Tags: instancecitydataisvalueupdate端点class
1条回答
网友
1楼 · 发布于 2024-03-28 10:16:32

可以为同一视图集注册不同的url,例如:

router = routers.DefaultRouter()
router.register(r'city', CityViewSet)
router.register(r'town', CityViewSet.as_view({'patch':'partial_update'})

如果您使用的是可浏览的API,而DRF正在创建反向URL,那么您可能会在那里得到第一个URL(在上面的示例中,使用'city')

如果您只想用第二个链接进行修补,那么执行.as\u视图({'PATCH':'partial_update'})将阻止使用其他方法访问它,因为如果您尝试使用任何其他方法访问它,它将抛出MethodNotAllowed。在

相关问题 更多 >