唐僧一行人受唐王李世民委派,攜通關(guān)文牒,前往西天取經(jīng),一路斬妖除魔,經(jīng)歷九九八十一難,成功到達了西天大雷音寺,在僧人引導下,穿過羅漢堂,終見佛祖,佛祖接見唐僧師徒后,化佛法為經(jīng)書,師徒取得經(jīng)書后,興致極好,未經(jīng)檢查就將經(jīng)書加入行囊,欲離去之時,幸得彌勒佛指引,攜無字經(jīng)重返大雄寶殿,一番波折后,用紫金缽盂換得真經(jīng)書,最后攜帶真經(jīng)返回東土大唐...
這個故事很像瀏覽器與服務端Django的通訊過程:
西天取經(jīng) | 一次通訊 |
---|---|
"唐王" | 普通用戶 |
"東土大唐" | 瀏覽器 |
"西天取經(jīng)" | 一次面向服務端的請求 |
"通關(guān)文牒" | cookie |
"路上的妖魔鬼怪" | "處理請求"中間件process_request
|
"雷音寺" | Django核心服務 |
"引路僧人" | 路由表 |
"抵達大雄寶殿" | 獲得request 對象 |
"十八羅漢" | 中間件(process_view ) |
"佛祖" | 視圖函數(shù) View |
"佛法" | 數(shù)據(jù) Model |
"無字經(jīng)" | 網(wǎng)頁模板 Template |
"紫金缽盂" | 處理響應的中間件process_response
|
"彌勒佛" | 負責異常處理的中間件process_exception
|
一次面向Django服務端的請求:
第一步:
- 用戶(唐王李世民)從瀏覽器(東土大唐)發(fā)起一次"請求"(西天取經(jīng)),被"負責處理請求"中間件
process_request
(妖魔鬼怪,九九八十一難)進行初步處理;
第二步:
- "請求"匹配路由表(引路僧人),找到對應的視圖,先被中間件
process_view
處理(羅漢堂),然后被視圖函數(shù)(佛祖)處理.
第三步:
- 視圖函數(shù)(佛祖)從數(shù)據(jù)庫中獲得數(shù)據(jù)(佛法),從Templates中獲取模板(無字經(jīng)),將數(shù)據(jù)與模板結(jié)合,產(chǎn)生響應對象("真經(jīng)")
第四步:
- 上步獲得的響應對象("真經(jīng)"),被處理響應的中間件
process_response
(如果不提供"紫金缽盂","真經(jīng)書"可能會變成"無字經(jīng)")處理,此時,如果響應出現(xiàn)了異常("真經(jīng)"變成了"無字經(jīng)"),會有process_exception
(彌勒佛),進行異常處理
第五步:
- 響應信息("獲得的真經(jīng)")返回瀏覽器("東土大唐")后,將響應信息("獲得的真經(jīng)")解析展示的用戶("唐王")面前
白龍馬,蹄朝西...
Django有多好用呢?在整個過程中,所有的中間件,Django都幫我們寫好了,所以開發(fā)者只需要擔任"佛祖"的角色即可!
本文永久更新地址(歡迎來讀留言,寫評論):
https://www.v2fy.com/p/2020-12-27-django_process_response-1609053552000