总结3

总结

生命周期

路由中的as_view是突破口,我们的cbv函数是继承了的apiview,

apiwiew是先调用了view中的as_view,然后禁用了所有的继承了apiview的子类csrf

然后在view调用了apiview中disbach方法,所以以后的drf中的所有的模块

都是以apiview中的disbach作为入口,分发各个模块

请求模块

在get请求中取值我们用,request.query_params

在psot请求中取值我们用, request.data

源码解析,,先进入了dispach,可以看到一个request的一个类

类中就对request进行了二次封装

渲染模块

在apisttings中我们看尽如果是要自定义渲染样式,就得安装注释的方法在自己的settings中

将配置文件拷贝,然后在将自己的类中,

from rest_framework.renderers import JSONRenderer,BrowsableAPIRenderer
renderer_classes =[JSONRenderer,BrowsableAPIRenderer]

源码解析,,

扫描二维码关注公众号,回复: 7470008 查看本文章

先进入,渲染的接口,然后你面我们要得到一个renderer,对象,而且要返回到页面,

得到这个对象,的一个renderer_list就是在apiview中,这里我们要设置全局的或是局部的,就进入apisettings,将配置拷贝

解析模块

from rest_framework.parsers import JSONParser

parser_classes = [JSONParser]

源码解析

进入dispatch,

在进入parsers=self.get_parsers()

然后就是到apiview中的parsers_list,拷贝,parsers的配置到本地

异常模块

在app中新建一个py文件

在文件中重写exception_handler方法

在调用原来的exception_handler方法,得到一个response,判断是否为空,

我们只改为空的的response,给他返回一个Respose对象,

最后将原来的exception_handler这个的返回值返回

在settings中我们还要设置配置

'EXCEPTION_HANDLER': 'api.exception.exception_handler',

在视图函数中我们通过get获取错误

后面的路由的有名分组,是不需要?后面拼接参数的,直接跟参数就可以了

响应模块

from rest_framework import status就是解释一堆 数字 网络状态码的模块

return Response(data={数据}, status=status.HTTP_200_OK, headers={设置的响应头})

序列化

与前端的forms组件,格式差不多,我们先要导入

然后在view视图类中的将book_obj放入我们穿件的自定义组件中。data就可以转换为字典

from rest_framework import serializers,exceptions
book_obj = Userserializer(book_obj).data

反序列化

还是要写个类

和上面的序列化是一样的,只是在字段括号内需要写入限制详细,和错误信息,

然后还可以配置局部钩子,和全局钩子,

最后所有数据都符合了,就重写create方法,返回对象

在viwe视图函数中,

我们先判断前端穿传来的数据是否是正确的,如果不是就直接返回状态详细信息

如果数据是正确的,我们直接将我们写好的主键导入过来,然后将数据传入,以data=与的形式,返回一个返回值

我们通过这个返回值,点is_valid()来半段数据是否经过校验,如果校验成功,得到book_obj

book_ser.save()

然后我们返回前端消息,在result中可以直接使用序列化,就可以了

 

 

 

 

 

 

猜你喜欢

转载自www.cnblogs.com/cherish937426/p/11682034.html