当响应为 None 时,让其余框架返回 null

Bri*_*ian 5 django-rest-framework

我的理解是其余框架 3 的

Response(None)
Run Code Online (Sandbox Code Playgroud)

完全等同于

Response()
Run Code Online (Sandbox Code Playgroud)

,其中(JSON)结果是一个空的响应正文,而不是null. 空响应将转换为 JavaScriptundefined而不是null,这是不正确的。所以,如果我坚持要null被退回,我不能这样做:

Response('null')
Run Code Online (Sandbox Code Playgroud)

因为这是可以理解的序列化为"null". 因此,为了null在响应中产生实际值,我必须破解一个自定义渲染器,该渲染器不加选择地返回其数据的 JSON 转储:

class PlainTextRenderer(renderers.BaseRenderer):
    media_type = 'application/json'
    format = 'json'

    def render(self, data, media_type=None, renderer_context=None):
        import json
        return json.dumps(data)

renderer_classes = (PlainTextRenderer,)
Run Code Online (Sandbox Code Playgroud)

这似乎太骇人听闻了。尽管渲染器确实有效,但我是否错过了更简单的东西?