不使用数据库的Django REST API

时间:2019-01-30 05:59:58

标签: python django rest django-rest-framework

我有一个现有的Django应用程序。我需要在其中包含一个不涉及数据库的功能。 我已经在 views.py

中编写了要执行的操作
 class VamComponent(View):
    def getSectionADetails(self,request):
     .......
    return HttpResponse()

urls.py 中,我将此行包括在urlpatterens中:

url(r'^vamcomponent$', VamComponent.as_view())

我可以从该URL http://localhost:8000/vamcomponent/ 中访问详细信息。

我需要为端点中的URL中的段提供一些值,例如 http://localhost:8000/vamcomponent/SectionA http://localhost:8000/vamcomponent/SectionB

views.py 中,如果我将类修改为具有2个功能,则应基于请求中section的值调用相应的方法

 class VamComponent(View):
    def getSectionADetails(self,request):
     .......
    return HttpResponse()
    def getSectionBDetails(self,request):
     .......
    return HttpResponse()

如何在 urls.py 文件中进行此更改,以便在请求中包含SectionA且其他getSectionADetails()时调用getSectionBDetails()

1 个答案:

答案 0 :(得分:2)

我认为您可以尝试这样:

首先,您需要更新视图,以使其接受新参数,即SectionASectionB     #个网址

url(r'^vamcomponent/(?P<section>[-\w]+)/?$', VamComponent.as_view())

现在,让我们相应地更新视图,以便在url中传递的值进入视图:

class VamComponent(View):
     def get(self, request, section=None):  # or post if necessary
         if section == "SectionB":
            return self.getSectionBDetails(request)
         return self.getSectionADetails(request)    

仅供参考,如果您使用的是django-rest-framework,那么为什么不使用APIView

from rest_framework.views import APIView

class VamComponent(APIView):
    # rest of the code