【问题标题】:Define & Use Custom renderer Django Rest Framework View定义和使用自定义渲染器 Django Rest Framework 视图
【发布时间】:2019-08-12 21:49:01
【问题描述】:

我正在尝试为 django rest 框架视图覆盖 CSV 渲染器导入。方法如下:

class CustomCSVRenderer(BaseCSVRenderer):
   def render():
      do something

   def tablize():
      do something

我在同一个 python 类 views.py 中定义了 CustomCSVRenderer 作为有问题的视图:

class MyView(ListAPIView, CustomMixinSet):

    renderer_classes = (CustomRenderer, JSONRenderer)

当我尝试调试此实现时,我的 pdb 调试器从未命中 CustomCSVRenderer,而是根据 django restframework 使用的一些底层渲染器得到响应。

可能是什么问题?我怎么知道 django rest framework 使用的是什么渲染器?

【问题讨论】:

  • 你还没有设置趋势者的media_type和format属性,如the docs所示。

标签: python django django-rest-framework renderer


【解决方案1】:

正如 @Daniel Roseman 在评论部分所述,您需要做更多工作才能使此自定义渲染器正常工作。

来自文档:

要实现自定义渲染器,您应该重写BaseRenderer,设置.media_type.format 属性,并实现.render(self, data, media_type=None, renderer_context=None) 方法。

因此,您的CustomCSVRenderer 应如下所示:

class CustomCSVRenderer(BaseCSVRenderer):
    media_type = 'text/csv'
    format = 'csv'

    def render(self, data, media_type=None, renderer_context=None):
       ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-08
    • 1970-01-01
    • 1970-01-01
    • 2018-10-18
    • 2014-07-06
    • 1970-01-01
    • 2017-10-16
    • 2014-09-27
    相关资源
    最近更新 更多