Как получить сериализованный API-интерфейс представления данных в другое представление? - PullRequest
0 голосов
/ 13 декабря 2018

Каков наилучший способ получить DRF API представление данных в другом представлении Django?

В настоящее время я просто вызываю представление через requests модуль:

response = requests.get('my_api_view')

, но этоесть более чистый способ?

Я также могу просто создать экземпляр класса представления API в другом представлении, но это даст мне несериализованные объекты.

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Я не уверен, чего именно вы хотите достичь, но желание назвать представление из другого представления может быть признаком плохой архитектуры.Это может означать, что у вас есть бизнес-логика, реализованная во втором представлении, к которому вы хотите получить доступ в первом.Обычно эмпирическое правило заключается в том, чтобы переместить такую ​​общую логику в другое место, чтобы ее могли использовать разные представления.Опять же, я не знаю, чего вы хотите достичь, но это возможно.

0 голосов
/ 13 декабря 2018

Не уверен, что ты имеешь в виду под получением несериализованных объектов.Если вы используете представления на основе функций, вы можете сделать следующее:

def view(request):
    # some stuff done
    return Response(<result>)

def another_view(request)
    return view(request)

Если ваши представления основаны на классах, вы можете сделать следующее:

class AClassBasedView(SomeMixin, SomeOtherMixin):

    def get(self, request):
        # do something with the request
        return Response(<some result>)


class AnotherClassBasedView(SomeMixin, SomeOtherMixin):

    def compute_context(self, request, username):
        #some stuff here here                        
        return AnotherClassBasedView.as_view()(request)

Оба изони вернут объект <class 'rest_framework.response.Response'>, который можно передать дальше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...