1、HTTP请求本质
Django程序:socket服务端a、
服务端监听IP和端口
浏览器:socket客户端
b、浏览器发送:
GET请求:
POST请求:
post有请求体,get没有
上图为wsgiref做的事情。
上图为django生命周期。
在url上加上html造成伪静态页面:
如上图,fbv和cbv
fbv在views中对应函数
cbc在views中对应类
get请求执行get函数
post请求执行post函数
随便写一个页面
如果提交表单,只支持GET和POST,ajax支持上面所有方法,在type中写
restful规范
请求到了之后不是直接运行get或POST函数,而是到了dispatch方法,在views父类中
如上图,将登陆写到一个类里通过dispatch的过程验证登录,其他的功能直接继承这个类就好了。
装饰器
装饰器必须导入上面的。
装饰器有三种位置
1 get 或post前面
2 类的前面(必须加name)
3 dispatch前面 (csrf token只能加到这里)
如上图,在dispatch前加
如上图,也可以在class前加装饰器,但必须加上name
上图为写中间件,还要在settings中注册一条。
上图为向后兼容方式写中间件。写中间件必须有返回值,不然浏览器会接收不到。
如上图
如上图和上上图,如果直接写response了,那么客户端的访问当走到这个中间件的时候就会直接返回了。
上图为process_view执行流程,
先将所有中间件的request跑一遍,找到了路由匹配之后,再将所有process_view跑一遍,最后倒着将response跑一遍。
如下图,如果在process_view中有返回值则直接到最后一个中间件,执行所有的response
如上图,在中间件中写上exception,如果报错的话输出返回内容。默认不执行。
上图为完整流程。蓝色箭头为,如果报错,exception有处理,则返回来重新返回所谓的友好界面给浏览器。
如上图,上上图和上上上图,如果返回对象里有render方法则执行。process_template_response,
前提是views中返回一个render方法的对象。
Git使用方法
需要先安装Git-2.13.3-64-bit.exe
git工作方式图
如果从旧版本回到新版本需要如上操作,git reflog命令可以查看后面更新的版本,log只能看到之前的版本。