Django Rest Framework - Html 渲染器坏了?
Django Rest Framework - Html renderer broken?
我目前正在尝试 return 我的 django rest 框架设置中的一个 html 页面:
@action(detail=True)
@renderer_classes((TemplateHTMLRenderer,))
def confirmation(self, request, *args, **kwargs):
user = self.get_object()
print(request.accepted_renderer) -> BrowsableAPIRenderer | WHY ?
// do some business logic
return Response({'user': user}, template_name='confirmation.html')
但是浏览器打印错误:
Object of type 'User' is not JSON serializable
所以我的问题是,为什么当我指定 TemplateHTMLRenderer 时 DRF 使用 BrowsableAPIRenderer?
有人可以帮我吗?
TemplateHTMLRenderer 的文档非常少,所以我不得不问这个问题..
谢谢和问候!
renderer_classes
装饰器 似乎不能与 CBV 一起正常工作。无论如何,我找到了一种 workaround/DRF 方法来做到这一点。
覆盖 get_renderers()
方法
class Foo(viewsets.ModelViewSet):
# your code
<b>def get_renderers(self):
if self.action == 'confirmation':
return [TemplateHTMLRenderer()]
else:
return super().get_renderers()</b>
@action(detail=True)
def confirmation(self, request, *args, **kwargs):
user = self.get_object()
return Response({'user': user}, template_name='confirmation.html')
我目前正在尝试 return 我的 django rest 框架设置中的一个 html 页面:
@action(detail=True)
@renderer_classes((TemplateHTMLRenderer,))
def confirmation(self, request, *args, **kwargs):
user = self.get_object()
print(request.accepted_renderer) -> BrowsableAPIRenderer | WHY ?
// do some business logic
return Response({'user': user}, template_name='confirmation.html')
但是浏览器打印错误:
Object of type 'User' is not JSON serializable
所以我的问题是,为什么当我指定 TemplateHTMLRenderer 时 DRF 使用 BrowsableAPIRenderer?
有人可以帮我吗?
TemplateHTMLRenderer 的文档非常少,所以我不得不问这个问题..
谢谢和问候!
renderer_classes
装饰器 似乎不能与 CBV 一起正常工作。无论如何,我找到了一种 workaround/DRF 方法来做到这一点。
覆盖 get_renderers()
方法
class Foo(viewsets.ModelViewSet):
# your code
<b>def get_renderers(self):
if self.action == 'confirmation':
return [TemplateHTMLRenderer()]
else:
return super().get_renderers()</b>
@action(detail=True)
def confirmation(self, request, *args, **kwargs):
user = self.get_object()
return Response({'user': user}, template_name='confirmation.html')