day82
1 drf内容概况
2 web开发模式
3 api接口
4 postman的使用
5 drf的安装和使用
6 cbv源码回顾
## 1 drf内容概况 ```python 1 django-rest-framework:drf,是一个app 1-drf-drf入门规范 2-drf-序列化组件 3-drf-请求与响应 4-drf-视图组件 5-drf-路由组件 6-drf-认证权限频率 7-drf-过滤排序分页异常处理 8-drf-自动生成接口文档 9-drf-JWT认证:token 10-drf-Xadmin的使用:第三方写的,比admin好看的后台管理 11-Book系列多表群操作 12-RBAC-基于角色的访问控制 django缓存,信号,跨域(cors:跨域资源共享) 2 Vue:前端js框架 3 前后端分离项目:路飞学城 ``` ## 2 web开发模式 ```python 1 前后端混合开发(模板语言:DTL),处理很多前端问题 2 前后端分离:前端是一个项目,后端是一个项目,联调 -全栈开发 3 前端:不仅仅指 web前端,移动端,小程序 -web:vue,react,html+css+jq -移动端:ios(object c,swift),安卓(java,Kotlin) -小程序:微信自己把js,html,css,封装了一些 -发展到现在:大前端概念 -flutter:Dart -uni-app:vue框架 4 后端只需要返回json格式字符串即可 ``` ## 3 api接口 ```python 1 /books/--->返回json格式数据--->/books/就是一个api接口 2 开放的api接口 -微博 -百度 3 api文档(前端开放看的) 4 典型的api接口 -https://api.weibo.com/2/statuses/home_timeline.json ``` ## 4 postman的使用 ```python 1 后端开放完,使用postman测试接口(api接口) 2 使用postman导出和导入测试接口(自己回去试一下) 3 公司测试平台 ``` ## 5 drf的安装和使用 ```python 1 djangorestframework:django的app,只能再django上使用 2 pip3 install djangorestframework 3 简单使用,看代码 django: 2.0.7 ,1版本也可以 djangorestframework:3.12.1 ``` ## 6 cbv源码回顾 ```python # drf:APIView的源码分析 def as_view(cls, **initkwargs): # 这句话执行完成返回 view闭包函数的内存地址 view = super().as_view(**initkwargs) # 调用父类(View)的as_view view.cls = cls view.initkwargs = initkwargs view=csrf_exempt(view) # 局部禁用csrf return view # 装饰器的使用方式 @csrf_exempt ====>view=csrf_exempt(view) def view(): pass # 请求来了,会执行上面返回的view()---->self.dispatch(APIView的dispatch) # APIView的dispatch方法 def dispatch(self, request, *args, **kwargs): # 把原生的request,封装进新的Request对象(drf的Request) request = self.initialize_request(request, *args, **kwargs) self.request = request try: # 重点(频率,认证,权限。。。) self.initial(request, *args, **kwargs) if request.method.lower() in self.http_method_names: handler = getattr(self, request.method.lower(), self.http_method_not_allowed) else: handler = self.http_method_not_allowed # 这个request新的requst,是drf中Request对象 # response是原生response response = handler(request, *args, **kwargs) except Exception as exc: # 全局异常 response = self.handle_exception(exc) # 把原生response包装了一下 self.response = self.finalize_response(request, response, *args, **kwargs) return self.response ```

浙公网安备 33010602011771号