【问题标题】:is it possible make two GET endpoints in djangorestframework via APIVIEW是否可以通过 APIVIEW 在 djangorestframework 中创建两个 GET 端点
【发布时间】:2018-02-15 17:52:46
【问题描述】:

我需要在一个类中在 django rest 框架中创建两个 GET 端点 这是端点将通过 api 与另一个系统一起工作

我试过了

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'}) 

但这不起作用 提前谢谢

【问题讨论】:

标签: django-rest-framework


【解决方案1】:

尝试使用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")

【讨论】:

  • 谢谢你的回答,但我不会在这个课程中使用我的模型,所以我不能使用模型视图集
  • 我更新了答案,试试看是否有效
  • 谢谢你,这个工作,但我决定使用这个方法stackoverflow.com/a/43781497/7890051
猜你喜欢
  • 2018-12-11
  • 2021-07-20
  • 2023-03-29
  • 2017-01-17
  • 2011-04-15
  • 1970-01-01
  • 2016-10-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多