定义和使用自定义渲染器 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):
       ...