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会把这些数据(客户端想要的数据)以字符串的格式返回给客户端.
    
    	- 客户端接收到返回的数据后,在页面渲染后显示给用户.
  • 相关阅读:
    跳出iframe
    leetcode 225. Implement Stack using Queues
    leetcode 206. Reverse Linked List
    leetcode 205. Isomorphic Strings
    leetcode 203. Remove Linked List Elements
    leetcode 198. House Robber
    leetcode 190. Reverse Bits
    leetcode leetcode 783. Minimum Distance Between BST Nodes
    leetcode 202. Happy Number
    leetcode 389. Find the Difference
  • 原文地址:https://www.cnblogs.com/Wormhole-f/p/7903294.html
Copyright © 2011-2022 走看看