尝试使用ModelViewset class,
views.py
from rest_framework import viewsets
class MyApiView(viewsets.ModelViewSet):
permission_classes = (AllowAny,)
serializer_class = MySerializer
queryset = Sample.objects.all()
def function_name_1(self, request):
# do stuff
return Response(data="return your data")
def function_name_2(self, request):
# do stuff
return Response(data="return your data")
def function_name_3(self, request, pk):
# do stuff
return Response(data="return your data")
urls.py
from rest_framework.routers import DefaultRouter
from django.conf.urls import url
router = DefaultRouter()
router.register(r'myendpoint', MyApiView)
urlpatterns = [
url(r'^myendpoint/end_point_1/$', MyApiView.as_view({'get': 'function_name_1'}), name='function_name_1'),
url(r'^myendpoint/end_point_2/$', MyApiView.as_view({'post': 'function_name_2'}), name='function_name_2'),
url(r'^myendpoint/end_point_3/$', MyApiView.as_view({'put': 'function_name_3'}), name='function_name_3'),
]+router.urls
UPDATE-1
将您的 views.py 更改为此,
from rest_framework import viewsets
class MyApiView(viewsets.ViewSet):
permission_classes = (AllowAny,)
def function_name_1(self, request):
# do stuff
return Response(data="return your data")
def function_name_2(self, request):
# do stuff
return Response(data="return your data")
def function_name_3(self, request):
# do stuff
return Response(data="return your data")