我有一个现有的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()
?
答案 0 :(得分:2)
我认为您可以尝试这样:
首先,您需要更新视图,以使其接受新参数,即SectionA
或SectionB
#个网址
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