rest_framework框架的请求和相应
1.请求

如果的我们的视图类继承了APIView的话,我们的前端传递的request参数会被二次封装,我们可以通过源码来进行分析。

也因此我们在使用request时会比原来方便很多,比如:
1.1 request.data中包含了前端以三种编码方式传递来的参数,django原生的request并不会处理json格式的编码,只会放在request中,而我们进行二次封装后的所有数据都存放在request.data中
1.2 request.query_params 与django标准的request.GET相同,只是改了个名字而已
2.响应

2.1Response中的各个参数:
data: 一般会传入返回给前端的字典
status:响应状态码
template_name:当是以浏览器访问是返回的页面样式的模板名字,一般不会修改,使用默认的即可
headers:响应头中存放的内容,就是一个字典
content_type:响应的编码格式,比如:application/json和text/html,浏览器响应成浏览器的格式,postman响应成json格式,通过配置实现的(默认配置)
2.2DRF返回格式的设置
全局:-在setting.py中加入如下
点击查看代码
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': ( # 默认响应渲染类
'rest_framework.renderers.JSONRenderer', # json渲染器
'rest_framework.renderers.BrowsableAPIRenderer', # 浏览API渲染器
)
}
点击查看代码
#在视图类中写如下
from rest_framework.renderers import JSONRenderer
renderer_classes=[JSONRenderer,]
2.2 自定义Response对象
# utils.py
class APIResponse(Response):
def __init__(self,code=1000,msg='成功',data=None,status=None,headers=None,**kwargs):
back_dic={'code':code,'msg':msg} # 返回的data
if data: # 若data有值将它添加到返回data中,我们可也选择传不传data
back_dic['data']=data
back_dic.update(kwargs)
super().__init__(data=back_dic,headers=headers,status=status) # 调用Response类的初始化方法
# 使用
return APIResponse(data={"name":'mress'},token='dsafsdfa',aa='dsafdsafasfdee') # token,aa参数会被添加到返回data的字典中
return APIResponse(data={"name":'mress'})
return APIResponse(code='101',msg='错误',data={"name":'mress'},token='dsafsdfa',aa='dsafdsafasfdee',header={})

浙公网安备 33010602011771号