<method>: /api/xxx/
/api/xxx/{pk}/
/api/xxx/ooo_app/
/api/xxx/xxx_app/{pk}/
# urls.py
from django.conf.urls import url, include
from rest_framework.routers import DefaultRouter
router = DefaultRouter()
router.register(r'xxx', views.XXXViewSet, "xxx")
# views.py
class XXXViewSet(viewsets.ModelViewSet):
queryset = {}
serializer_class = {}
def list(self, request, *args, **kwargs):
return Response({'method': 'list'})
def create(self, request, *args, **kwargs):
return Response({'method': 'post'})
def retrieve(self, request, *args, **kwargs):
return Response({'method': 'get'})
def update(self, request, *args, **kwargs):
return Response({'method': 'put'})
def partial_update(self, request, *args, **kwargs):
return Response({'method': 'patch'})
def destroy(self, request, *args, **kwargs):
return Response({'method': 'delete'})
@action(methods=['GET', 'POST'], detail=False, url_path='ooo_app')
def ooo_app(self, request):
if request.method == 'GET':
return Response({'ooo_app': 'GET'})
else:
return Response({'ooo_app': 'post'})
@action(methods=['POST'], detail=False, url_path='xxx_app/(?P<pk>\d+)')
def xxx_app(self, request, **kwargs):
print(kwargs)
return Response({'xxx_app': 'post'})
转载于:https://my.oschina.net/redhands/blog/3092938