django+DRF项目中统一json返回格式

1、重写JSONRenderer的render方法

重写 JSONRenderer 类的render渲染函数,就可以调整返回格式

from rest_framework.renderers import JSONRenderer

项目中放在了common文件夹下创建custom文件夹,在这里重写JSONRenderer,并在settings.py配置即可!

"""
重写json返回的渲染器!
需要在settings.py中配置自定义渲染器才可以生效!!
# 前端接收json数据的格式渲染器
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': [
'common.custom.json_renderer.MyRenderer',
'rest_framework.renderers.BrowsableAPIRenderer',
],
}
"""
from rest_framework.renderers import JSONRenderer
class MyRenderer
(JSONRenderer):
"""重写JSON的渲染器"""
def render(self, data, accepted_media_type=None, renderer_context=None):
if renderer_context:
if isinstance(data, dict): # 如果响应是字典
code = renderer_context['response'].status_code
else:
code = renderer_context['response'].status_code
# 自定义返回:
res = {
'code': code,
'data': data
}
# 返回json
return super().render(res, accepted_media_type, renderer_context)
else:
return super().render(data, accepted_media_type, renderer_context)

2、在settings.py中配置

需要在settings.py中配置自定义渲染器才可以生效!!

# 前端接收json数据的格式渲染器
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': [
'common.custom.json_renderer.MyRenderer',
'rest_framework.renderers.BrowsableAPIRenderer',
],
}

3、测试请求:

在这里插入图片描述

posted on 2025-09-23 20:21  lxjshuju  阅读(14)  评论(0)    收藏  举报