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',
],
}