Динамически установить renderer_class в DRF - PullRequest
0 голосов
/ 05 февраля 2019

Как я могу динамически установить renderer_class в DRF из параметра запроса?

Я знаю, что DRF выбирает renderer_class на основе заголовка ACCEPT, но клиент запросил опцию выбора класса на основе параметра запроса GET

Ответы [ 2 ]

0 голосов
/ 26 июля 2019

render_class - это атрибут, доступный в APIView, и это список, а не кортеж, поэтому он должен быть изменяемым.

from rest_framework.renderers import JSONRenderer

available_render_dicts = {'json': JSONRenderer}

class SomeAPIView(APIView):

    renderer_classes = []

    def get_format_suffix(self, **kwargs):
       format = self.request.query_params.get(self.format_suffix)
       self.render_classes = available_render_dicts[format]
       super().get_format(**kwargs)
0 голосов
/ 06 февраля 2019

Этого можно достичь, переписав функцию get_format_suffix в представлении.

class MyView(APIView):

    format_suffix = 'format'

    def get_format_suffix(self, **kwargs):
        return self.request.query_params.get(self.format_suffix)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...