Reputation: 425
Me need make two GET endpoint in django rest framework in one classes this is endpoints will work with another system via api
i tried
class MyApiView(APIView):
permission_classes = [AllowAny]
def get(self, request):
return Response({'test':'test'})
@list_route(methods=['GET'], )
def two_endpoint(self, request):
return Response({'test': 'test'})
but this not work thanks in advance
Upvotes: 1
Views: 2388
Reputation: 88569
try to use 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
Change your views.py
to this,
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")
Upvotes: 2