HTTP协议 -请求协议(wsgi协议负责拆) -请求首行:get/http/1.1 -请求头部:key:value的形式,有编码方式contenttype,referer,useragent -请求体:urlencode编码方式,是可以直接被django解析的,name=lww&name=18,django会拆到大写的POST中 formdata编码方式:上传文件的,--sfsjf--格式,数据django会拆到POST中,文件会拆到request.FILES中 json:原生的django处理不了,body体中取出自行处理,drf中可以request.data中可以取出
PS:前台传过来json格式,每次都要自己取,这样很麻烦,我封装了一个方法paserRequest,将body体中的数据出来放到request.data中再返回request,之后每次需要解析json格式调一下就可以了,后来又给修改成了装饰器,装饰器里面还可以加认证,频率等功能
-响应协议
-响应首行:HTTP/1.1 200 ok/r/n
-响应头部:key:value的形式
-响应体:响应体的内容才是我们看到的html页面的东西,页面渲染出来的东西
-特性:
-在tcp/ip协议之上
-无状态,所以才引出了cookie,cookie不安全,发展到session,session对服务器有压力,又有了token
-无连接,连一次后直接断开,socket是一直连着
-请求、响应,发一个请求给一个响应,响应后就断开
服务器主动推送消息:
1、轮询:用ajax间隔几秒就向服务器发送请求
2、长轮询:发过请求后在那挂10秒,10秒后断开再发一次请求,10秒内有消息的话就接收并显示出来(主流网站都是用长轮询)
3、websocket:有的浏览器不兼容
1 基本路由 url(‘正则表达式‘, 函数地址, {默认值}, name=‘test‘) 2 有名分组/无名分组:url(r‘^articles/(?P<year>[0-9]{4})/$‘, views.year_archive), 3 路由的分发:include,url(‘app01/‘, include(urls)),app01/后不要加终止符$
4 反向解析:解决路由可能改变的情况,通过url里name动态解析出路由地址,视图层url=reverse(‘test‘),模板层{% url ‘test‘ %}
5、名称空间:url(r‘app01/‘,include(‘app01.urls‘,namespace=‘app01‘),name=‘index‘),视图层url=reverse(‘app01:index‘),模板层{% url ‘app01:test‘ %}
遇到的问题:一开始不知道有名称空间,项目中用方向解析的时候,总是重定向不对,因为是多人协同开发的,后来发现是和同事命名一样了,后来上网查找有名称空间这个东西
6、django2.0的re_path和1.0的url一样,一开始用的1.几的版本,后来用的2.几
原文:https://www.cnblogs.com/liweiwei0307/p/10464566.html