Рендер класса, перекрывающий метод класса в apiview

Я немного запутался Я хочу рендерить HTML или JSON, проверяя заголовок accept клиента, но поскольку я указал класс рендеринга по умолчанию, он все равно рендерит согласно классу рендеринга независимо от того, какой заголовок Accept header является

class HomeView(APIView):
        template_name = 'blog_app/home.html'
        renderer_classes = [TemplateHTMLRenderer]
    
    
        def get(self,request):
            context = os.getcwd()
            print(request.headers['Accept'])
            if 'text/html'in request.headers['Accept']:
                
                return Response({'dir':context},template_name=self.template_name)
            else:
                return Response({'dir':context},content_type='json')
        

Вам следует переопределить get_renderers функцию.

class HomeView(APIView):
        template_name = 'blog_app/home.html'
        renderer_classes = [TemplateHTMLRenderer]

        def get_renderers(self):
            if 'text/html'in request.headers['Accept']:
                self.renderer_classes = (TemplateHTMLRenderer,)
            else:
                self.renderer_classes = (JSONRenderer,)
        return super().get_renderers()
    
        def get(self,request):
            context = os.getcwd()
            return Response({'dir':context})
Вернуться на верх