千鋒教育-做有情懷、有良心、有品質的職業(yè)教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > Django HTTP請求的處理流程?

Django HTTP請求的處理流程?

來源:千鋒教育
發(fā)布人:wjy
時間: 2022-09-13 17:43:36 1663062216

  Django 和其他 Web 框架的 HTTP 處理的流程大致相同,Django 處理一個 Request 的過程是首先通過中間件,然后再通過默認的 URL 方式進行的。我們可以在 Middleware 這個地方把所有 Request 攔截住,用我們自己的方式完成處理以后直接返回 Response。

  (1) 加載配置

  Django 的配置都在 “Project/settings.py” 中定義,可以是 Django 的配置,也可以是自定義的配置,并且都通過 django.conf.settings 訪問,非常方便。

  (2) 啟動

  最核心動作的是通過 django.core.management.commands.runfcgi 的 Command 來啟動,它運行 django.core.servers.fastcgi 中的 runfastcgi,runfastcgi 使用了 flup 的 WSGIServer 來啟動 fastcgi 。而 WSGIServer 中攜帶了 django.core.handlers.wsgi 的 WSGIHandler 類的一個實例,通過 WSGIHandler 來處理由 Web 服務器(比如 Apache,Lighttpd 等)傳過來的請求,此時才是真正進入 Django 的世界。

Django HTTP 請求的處理流程

  (3) 處理 Request

  當有 HTTP 請求來時,WSGIHandler 就開始工作了,它從 BaseHandler 繼承而來。WSGIHandler 為每個請求創(chuàng)建一個 WSGIRequest 實例,而 WSGIRequest 是從 http.HttpRequest 繼承而來。接下來就開始創(chuàng)建 Response 了。

  (4) 創(chuàng)建 Response

  BaseHandler 的 get_response 方法就是根據(jù) request 創(chuàng)建 response,而具體生成 response 的動作就是執(zhí)行 urls.py 中對應的 view 函數(shù)了,這也是 Django 可以處理“友好 URL ”的關鍵步驟,每個這樣的函數(shù)都要返回一個 Response 實例。此時一般的做法是通過 loader 加載 template 并生成頁面內容,其中重要的就是通過 ORM 技術從數(shù)據(jù)庫中取出數(shù)據(jù),并渲染到 Template 中,從而生成具體的頁面了。

  (5) 處理 Response

  Django 返回 Response 給 flup,flup 就取出 Response 的內容返回給 Web 服務器,由后者返回給瀏覽器。

  總之,Django 在 fastcgi 中主要做了兩件事:處理 Request 和創(chuàng)建 Response,而它們對應的核心就是“ urls 分析”、“模板技術”和“ ORM 技術”。

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經(jīng)許可不得擅自轉載。
10年以上業(yè)內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
軟件定制開發(fā)中的敏捷開發(fā)是什么?

軟件定制開發(fā)中的敏捷開發(fā)是什么軟件定制開發(fā)中的敏捷開發(fā),從宏觀上看,是一個高度關注人員交互,持續(xù)開發(fā)與交付,接受需求變更并適應環(huán)境變化...詳情>>

2023-10-14 13:24:57
什么是PlatformIo?

PlatformIO是什么PlatformIO是一個全面的物聯(lián)網(wǎng)開發(fā)平臺,它為眾多硬件平臺和開發(fā)環(huán)境提供了統(tǒng)一的工作流程,有效簡化了開發(fā)過程,并能兼容各種...詳情>>

2023-10-14 12:55:06
云快照與自動備份有什么區(qū)別?

1、定義和目標不同云快照的主要目標是提供一種快速恢復數(shù)據(jù)的方法,它只記錄在快照時間點后的數(shù)據(jù)變化,而不是所有的數(shù)據(jù)。自動備份的主要目標...詳情>>

2023-10-14 12:48:59
服務器為什么要用Linux?

服務器為什么要用Linux作為服務器操作系統(tǒng)的優(yōu)選,Linux在眾多選擇中脫穎而出。Linux作為服務器操作系統(tǒng)的優(yōu)選,有其獨特的優(yōu)勢和特點。包括其...詳情>>

2023-10-14 12:34:11
ORM解決的主要問題是什么?

ORM(對象關系映射)解決的主要問題是將關系數(shù)據(jù)庫與面向對象編程之間的映射困境。在傳統(tǒng)的關系數(shù)據(jù)庫中,數(shù)據(jù)以表格的形式存儲,而在面向對象...詳情>>

2023-10-14 12:26:19
久久亚洲中文字幕精品一区四,亚洲日本另类欧美一区二区,久久久久久久这里只有免费费精品,高清国产激情视频在线观看
日本中文有码电影 | 碰在线视频免费播放 | 亚洲专区欧美日韩 | 中日韩视频在线观看一区二区三区不卡 | 一本久久a久久精品综合夜夜 | 在线国产精品中文字幕 |