接口返回内容的自定义
1.项目根目录中创建untils包用来存放要编写的renderer文件
2.创建rendererresponse.py文件
from rest_framework.renderers import JSONRenderer
#重写render方法
class customrenderer(JSONRenderer):
def render(self, data, accepted_media_type=None, renderer_context=None):
'''
:param data: 返回的数据
:param accepted_media_type:接收的类型
:param renderer_context: 呈现的内容
'''
#if renderer_context 相当于if request.method=="POST" 如果有请求的数据过来
if renderer_context:
#判断是否为实例
if isinstance(data,dict):#判断返回的数据是否是字典
msg=data.pop('msg',"请求成功")#如果是字典获取字典当中的msg参数
code=data.pop("code",0)#如果是字典获取字典当中code参数
else:#非字典类型
msg="请求成功"
code=0
ret={
"msg":msg,
"code":code,
"author":"xxx",
"data":data
}#重新构建返回数据格式
return super().render(ret,accepted_media_type,renderer_context)#返回数据格式
else:
return super().render(data,accepted_media_type,renderer_context)#
3.settings配置,安装renderer
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'
],
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 3,
'DEFAULT_RENDERER_CLASSES': (
'utils.rendererresponse.customrenderer',
),
}
接口传参
接口传参:在安装模块的时候安装过一个django-filter,这个模块是用来做数据过滤的模块。
实现步骤:
1.必须安装django-filter模块
2.在settings中安装插件
'DEFAULT_FILTER_BACKENDS': (
'django_filters.rest_framework.DjangoFilterBackend', # django-filter自带的查询过滤器
)
3.在视图中使用过滤器
好了,可以试验了
注意查询的时候中文不要加引号。