渲染 class 覆盖 apiview 中的 class 方法
render class overiding the class method in apiview
我有点困惑我想通过检查接受头来渲染HTML或JSON客户端的,但由于我指定了默认渲染 class,它仍然按照 render class 渲染,无论 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})
我有点困惑我想通过检查接受头来渲染HTML或JSON客户端的,但由于我指定了默认渲染 class,它仍然按照 render class 渲染,无论 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})