Django REST API без использования базы данных - PullRequest
0 голосов
/ 30 января 2019

У меня есть приложение 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 функции, в зависимости от значения раздела в запросе он должен вызвать соответствующий метод

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

Как сделать это изменение в urls.py файл, так что getSectionADetails() вызывается, когда в запросе есть SectionA, иначе getSectionBDetails()?

1 Ответ

0 голосов
/ 30 января 2019

Я думаю, вы можете попробовать вот так:

Сначала вам нужно обновить представление, чтобы оно принимало новый параметр, т.е. SectionA или SectionB # urls

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...