1、HTTP请求本质 Django程序:socket服务端a、 服务端监听IP和端口 浏览器:socket客户端 b、浏览器发送: GET请求: POST请求:post有请求体,get没有上图为wsgiref做的事情。上图为django生命周期。在url上加上html造成伪静态页面:如上图,fbv和cbvfbv在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.exegit工作方式图 如果从旧版本回到新版本需要如上操作,git reflog命令可以查看后面更新的版本,log只能看到之前的版本。