定义和使用自定义渲染器 Django Rest Framework View
Define & Use Custom renderer Django Rest Framework View
我正在尝试覆盖 Django 休息框架视图的 CSV 渲染器导入。方法如下:
class CustomCSVRenderer(BaseCSVRenderer):
def render():
do something
def tablize():
do something
我已经在与相关视图相同的 python class views.py
中定义了 CustomCSVRenderer
:
class MyView(ListAPIView, CustomMixinSet):
renderer_classes = (CustomRenderer, JSONRenderer)
当我尝试调试此实现时,我的 pdb 调试器从未命中 CustomCSVRenderer,而是我收到了基于 django restframework 使用的一些底层渲染器的响应。
可能是什么问题?我怎么知道 django rest 框架正在使用什么渲染器?
正如评论部分中的 @Daniel Roseman 所述,您需要做更多的工作才能使此自定义渲染器正常工作。
来自文档:
To implement a custom renderer, you should override BaseRenderer
, set the .media_type
and .format
properties, and implement the .render(self, data, media_type=None, renderer_context=None)
method.
因此,您的 CustomCSVRenderer
应该如下所示:
class CustomCSVRenderer(BaseCSVRenderer):
media_type = 'text/csv'
format = 'csv'
def render(self, data, media_type=None, renderer_context=None):
...
我正在尝试覆盖 Django 休息框架视图的 CSV 渲染器导入。方法如下:
class CustomCSVRenderer(BaseCSVRenderer):
def render():
do something
def tablize():
do something
我已经在与相关视图相同的 python class views.py
中定义了 CustomCSVRenderer
:
class MyView(ListAPIView, CustomMixinSet):
renderer_classes = (CustomRenderer, JSONRenderer)
当我尝试调试此实现时,我的 pdb 调试器从未命中 CustomCSVRenderer,而是我收到了基于 django restframework 使用的一些底层渲染器的响应。
可能是什么问题?我怎么知道 django rest 框架正在使用什么渲染器?
正如评论部分中的 @Daniel Roseman 所述,您需要做更多的工作才能使此自定义渲染器正常工作。
来自文档:
To implement a custom renderer, you should override
BaseRenderer
, set the.media_type
and.format
properties, and implement the.render(self, data, media_type=None, renderer_context=None)
method.
因此,您的 CustomCSVRenderer
应该如下所示:
class CustomCSVRenderer(BaseCSVRenderer):
media_type = 'text/csv'
format = 'csv'
def render(self, data, media_type=None, renderer_context=None):
...