1.CBV源码流程
2.restful协议
1 所有的数据,不过是通过网络获取的还是操作(增删改查)的数据,都是资源,将一切数据视为资源是REST区别与其他架构风格的最本质属性 2 面向资源架构(ROA:Resource Oriented Architecture) 3 不符合规范: 127.0.0.1:8000/books 127.0.0.1:8000/books/add/ 127.0.0.1:8000/books/change/1 127.0.0.1:8000/books/delete/1 http协议请求方式:GET POST,DELETE,PUT,PATCH,OPTIONS,HEAD,TRACE,CONNECT GET:查看数据 POST:提交数据添加数据库 GET books-------->查看数据--------------------> 返回所有数据列表 :[{},{},{}] POST books-------->添加数据--------------------->返回添加数据 :{} PUT books/1------->更新pk=1的数据--------------->返回更新后的数据: {} Delete books/1-------> 删除pk=1的数据-------------->返回空 GET books/1------->查看单条数据 --------------->返回查看的单条数据 {}
3.Django RestFramework(DRF)
1) APIView
(1) 源码分析
-->view(csrf_exempt()) // 调用父类的as_view得来
-->APIView.dispatch()
# 1 重新封装一个新的request对象
# 2 认证组件,权限组件,频率组件
--> 分发
handler = getattr(self, request.method.lower())
response = handler(request, *args, **kwargs)
return response
2) 序列化组件
3)视图类(mixin)
4)认证组件
5)权限组件
6) 频率组件
7)解析器组件
8) 响应器组件
10)url控制器
4.补充和扩展
1) ensure_ascii
json编码时候,默认将中文用ascii编码,设置ensure_acsii=False,保证中文不被编码。
2 ) request.body
请求体的原生数据。
3) 浏览器怎么发送Json数据,服务器怎么接受json数据
发:
收(View):
ret = request.body.decode('utf-8')
json.loads(ret)
python:json.dumps(),json.loads()
js:JSON.stringify,JSON.parse
收(APIView):
request.data/request.POST
4) django默认解析的数据类型
django.core.handlers.wsgi.WSGIRequest