zoukankan      html  css  js  c++  java
  • DJango_生命周期

    在django中,当我们访问一个url时,会通过路由匹配进入到响应的html页面中.

    Django的生命周期,指的就是当用户在浏览器上输入url,到用户看到整个页面之前,django后台都做了哪些事情?
    
    	- 当用户在浏览器上输入url,敲下回车的那一瞬间.前提是你电脑联网了…   浏览器会生成请求头和请求体,发送给服务端. 请求头和请求体中会包含浏览器的动作(action),  这个动作通常为GET/POST. 
    	
    		当你发送GET请求时,会以?分割你的url和请求数据 ,参数之间以&连接.
    		如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。
    		POST把提交的数据则放置在是HTTP包的包体中。
    		请结合GET&POST章节看… 
    
    	- url经过django中的wsgi  (参照wsgi那节…)
    
    	- 穿过一个一个的中间件(MD)
                        § 中间件是什么?   jiushi lei 
                           所有的请求批量处理的是时候,会用到中间件
                           如果是处理单个请求,可以用装饰器
                           进去时候叫  process_request  如果有返回值得话,会执行之前的response
                           出来时候叫 process_response  必须有返回值.
    		§ 中间件我再BB两句 : 如果要对批量请求做操作,可以自己写中间件…例如 : 大部分views都需要验证一下当前访问的页面,用户状态是否登录.)
    	- 进入urls, 在路由映射表中进行匹配.一旦匹配成功就执行相对应的视图函数,不会再继续向后匹配.
    		§ 再补充 : 有些url中会带有正则.那么就要注意如下 : 
    		§ 例: 
    		urlpatterns=[
    			url(r'^(?P<username>.*)/(?P<condition>tag|category|date)/(?P<para>.*)',views.homesite),
    		
    			url(r'^(?P<username>.*)/articles/(?P<article_id>d+)',views.article_detail)
    			
    			url(r'^(?P<username>.*)/$',views.homesite,name="omg")
    				]
    		
    		这个放置顺序是有讲究的哦.    条件较多,更精确的应该放在上面.
    		
    	- 视图函数根据客户端的请求查询相应的数据,返回给Django,然后django会把这些数据(客户端想要的数据)以字符串的格式返回给客户端.
    
    	- 客户端接收到返回的数据后,在页面渲染后显示给用户.
  • 相关阅读:
    洛谷P1070 道路游戏
    洛谷P1556 幸福的路
    洛谷P1457 城堡 The Castle
    洛谷P1298 最接近的分数
    2017-9-13 NOIP模拟赛[xxy]
    洛谷P3405 [USACO16DEC]Cities and States省市
    洛谷P1549 棋盘问题(2)
    洛谷P1578 奶牛浴场
    洛谷P2073 送花
    洛谷P3797 妖梦斩木棒
  • 原文地址:https://www.cnblogs.com/Wormhole-f/p/7903294.html
Copyright © 2011-2022 走看看