路飛學城Python-Day136
阿新 • • 發佈:2018-11-02
列舉Http請求中常見的請求方式
根據HTTP標準,HTTP請求可以使用多種請求方法。
HTTP1.0定義了三種請求方法: GET, POST 和 HEAD方法。
HTTP1.1新增了五種請求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法
談談你對HTTP協議的認識。什麼是長連線
http協議是基於網路應用層的,對伺服器和客戶端(瀏覽器)之間的一種傳輸超文字的傳送協議
長連線:HTTP的相應頭內有Connection:keep-alive
在使用長連線的情況下,當一個網頁開啟完成後,客戶端和伺服器之間用於傳輸HTTP資料的 TCP連線不會關閉,如果客戶端再次訪問這個伺服器上的網頁,會繼續使用這一條已經建立的連線。Keep-Alive不會永久保持連線,它有一個保持時間,可以在不同的伺服器軟體(如Apache)中設定這個時間。實現長連線要客戶端和服務端都支援長連線。
HTTP協議的長連線和短連線,實質上是TCP協議的長連線和短連線
HTTP協議特點
基於TCP/IP
計算機與網路裝置要相互通訊,雙方就必須基於相同的方法。比如,如何探測到通訊目標、由哪一邊先發起通訊、使用哪種語言進行通 信、怎樣結束通訊等規則都需要事先確定。不同的硬體、作業系統之間 的通訊,所有的這一切都需要一種規則。而我們就把這種規則稱為協議(protocol)。協議中存在各式各樣的內容。從電纜的規格到IP地址的選定方法、 尋找異地使用者的方法、雙方建立通訊的順序,以及Web頁面顯示需要 處理的步驟,等等。像這樣把與網際網路相關聯的協議集合起來總稱為TCP/IP。而http協議是基於TCP/IP協議之上的應用層協議。
基於請求-響應模式
HTTP協議規定,請求從客戶端發出,最後伺服器端響應該請求並 返回。換句話說,肯定是先從客戶端開始建立通訊的,伺服器端在沒有 接收到請求之前不會發送響應
無狀態儲存
HTTP是一種不儲存狀態,即無狀態(stateless)協議。HTTP協議 自身不對請求和響應之間的通訊狀態進行儲存。也就是說在HTTP這個 級別,協議對於傳送過的請求或響應都不做持久化處理。
使用HTTP協議,每當有新的請求傳送時,就會有對應的新響應產 生。協議本身並不保留之前一切的請求或響應報文的資訊。這是為了更快地處理大量事務,確保協議的可伸縮性,而特意把HTTP協議設計成 如此簡單的。可是,隨著Web的不斷髮展,因無狀態而導致業務處理變得棘手 的情況增多了。比如,使用者登入到一家購物網站,即使他跳轉到該站的 其他頁面後,也需要能繼續保持登入狀態。針對這個例項,網站為了能 夠掌握是誰送出的請求,需要儲存使用者的狀態。HTTP/1.1雖然是無狀態協議,但為了實現期望的保持狀態功能, 於是引入了Cookie技術。有了Cookie再用HTTP協議通訊,就可以管 理狀態了
無連線
無連線的含義是限制每次連線只處理一個請求。伺服器處理完客戶的請求,並收到客戶的應答後,即斷開連線。採用這種方式可以節省傳輸時間。
簡述MVC模式和MVT模式
MVC模式
Web伺服器開發領域裡著名的MVC模式,所謂MVC就是把Web應用分為模型(M),控制器(C)和檢視(V)三層,他們之間以一種外掛式的、鬆耦合的方式連線在一起,模型負責業務物件與資料庫的對映(ORM),檢視負責與使用者的互動(頁面),控制器接受使用者的輸入呼叫模型和檢視完成使用者的請求,其示意圖如下所示
MVT模式
Django的MTV模式本質上和MVC是一樣的,也是為了各元件間保持鬆耦合關係,只是定義上有些許不同,Django的MTV分別是值:
常見的HTTP狀態碼:
200 - 請求成功
301 - 資源(網頁等)被永久轉移到其它URL
404 - 請求的資源(網頁等)不存在
500 - 內部伺服器錯誤
序號 | 方法 | 描述 |
1 | GET | 請求指定的頁面資訊,並返回實體主體。 |
2 | HEAD | 類似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報頭 |
3 | POST | 向指定資源提交資料進行處理請求(例如提交表單或者上傳檔案)。資料被包含在請求體中。POST請求可能會導致新的資源的建立和/或已有資源的修改。 |
4 | PUT | 從客戶端向伺服器傳送的資料取代指定的文件的內容。 |
5 | DELETE | 請求伺服器刪除指定的頁面。 |
6 | CONNECT | HTTP/1.1協議中預留給能夠將連線改為管道方式的代理伺服器。 |
7 | OPTIONS | 允許客戶端檢視伺服器的效能。 |
8 | TRACE | 回顯伺服器收到的請求,主要用於測試或診斷。 |
- M 代表模型(Model): 負責業務物件和資料庫的關係對映(ORM)。
- T 代表模板 (Template):負責如何把頁面展示給使用者(html)。
- V 代表檢視(View): 負責業務邏輯,並在適當時候呼叫Model和Template。 除了以上三層之外,還需要一個URL分發器,它的作用是將一個個URL的頁面請求分發給不同的View處理,View再呼叫相應的Model和Template,MTV的響應模式如下所示
- 簡述Django請求生命週期
- 提高了程式碼的複用性,可以使用面嚮物件的技術,比如Mixin(多繼承)
- 可以用不同的函式針對不同的HTTP方法處理,而不是通過很多if判斷,提高程式碼可讀性
- 談一談你對ORM的理解
- rest_framework 認證元件的流程
- 什麼是中介軟體並簡述其作用
- django中怎麼寫原生SQL
- F和Q的作用
- values和value_list區別
- 如何使用django orm批量建立資料
- Django中的請求生命週期
- http訪問流程
- 命令migrate 和makemigrations的差別
- 檢視函式中,接收的請求物件常用方法和屬性有哪些
- 常用檢視響應的方式是什麼?
- HTTP響應常見狀態碼分類
分類 | 分類描述 |
1** | 資訊,伺服器收到請求,需要請求者繼續執行操作 |
2** | 成功,操作被成功接收並處理 |
3** | 重定向,需要進一步的操作以完成請求 |
4** | 客戶端錯誤,請求包含語法錯誤或無法完成請求 |
5** | 伺服器錯誤,伺服器在處理請求的過程中發生了錯誤 |
- 路由匹配原則是什麼?
- 快取系統型別有哪些
- 解決跨域的常用方式是什麼?
- 訊號的作用是什麼?
- Django的Model的繼承有幾種形式,分別是什麼
- Django中查詢queryset時什麼情況下用Q
- Django中想驗證表單提交是否格式正確需要用到Form中的哪個函式
- orm如何取消級聯
- Django中如何讀取和儲存session,整個session的執行機制是什麼