[英]DRF - creating multiple endpoints for PATCH request
我想為PATCH請求創建多個端點。
例如。
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
urls.py
router = routers.DefaultRouter()
router.register(r'city', CityViewSet)
我是否可以創建多個路由器,這些路由器最終僅轉到該視圖集的PATCH請求? 在更新方法中,基於URL,我將決定要做什么。
您可以為同一視圖集注冊不同的網址,例如:
router = routers.DefaultRouter()
router.register(r'city', CityViewSet)
router.register(r'town', CityViewSet.as_view({'patch':'partial_update'})
如果您使用的是可瀏覽的API,並且DRF正在創建反向網址,則您可能會在其中找到第一個網址(在上面的示例中,帶有“ city”)
如果只希望使用第二個鏈接的PATCH,則執行.as_view({'patch':'partial_update'})可以防止其他方法訪問它,因為如果嘗試使用任何其他方法訪問它,它將拋出MethodNotAllowed 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.