渲染类,覆盖apiview中的类方法



我有点困惑,我想通过检查客户端的接受标头来呈现HTMLJSON,但由于我已经指定了默认的呈现类,它仍然按照呈现类呈现,无论接受标头

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})

最新更新