Skip to content

Latest commit

 

History

History
29 lines (18 loc) · 2.53 KB

02-how-does-django-work.md

File metadata and controls

29 lines (18 loc) · 2.53 KB

Django 是一個 web framework。前面的 web 代表它是用來做網路相關的,可是 framework 是什麼意思?我很喜歡一個忘了在哪裡看到的說法:[註 1]

Framework 是一個框架,幫你把程式的架構都建好,等你填你需要的邏輯進去。Framework 會負責在合適的時機呼叫你寫的程式,而不是讓你自行呼叫合適的函式,以搭建程式本身。

也就是說,當你基於一個 framework 撰寫程式時,是 framework 用你的程式,在執行時達成目標;相對地,不使用 framework 時,則是你的程式使用某些函式(可能來自函式庫)來達成目標。

好喔,那 Django 到底是怎麼你的程式?這就要從 WSGI 開始說起。

絕大多數用 Python 寫成的網路服務,在本質上都是一個 WSGI 應用程式。WSGI,亦即「web server gateway interface」,是一個由 Python 官方制定,用來統一伺服器程式與 Python 程式之間溝通方式的標準。

如果你想多了解 WSGI,可以參考上面的官網連結,以及維基百科條目。如果你還沒興趣那麼深入,就繼續看下去吧。

每個 WSGI 應用程式,都需要搭配一個 WSGI 伺服器來執行。當一個 WSGI 伺服器被啟動時,會進行以下的動作:

  1. 初始化。
    1. 設定環境變數等執行參數。
    2. 找到與它對應的 WSGI 應用程式。
  2. 進入一個迴圈,不斷等待來自網路的請求(requests)。
  3. 當得到請求時,呼叫 WSGI 應用程式,並告知該請求內部的參數與資料。
  4. 回到迴圈。
  5. 重複 2—4,直到使用者或系統要求它停止。

當你建立一個 Django 專案時,Django 會自動幫你產生一個 WSGI 應用程式。你寫的所有程式,都不會被直接使用,而是由那個 WSGI 程式在執行時,視需求自動 import 元件來使用。所以當你使用 Django 開發時,可能會覺得好像建立了一堆東西,但是它們都沒有被呼叫。沒什麼好擔心的,呼叫它們是 WSGI 應用程式的工作!

現在你已經了解 Django 的運作原理,所以我們終於要開始寫程式了。不過今天就到這裡吧,明日待續。


註 1:其實在很多狀況中,即使某個東西自稱 framework,也不一定就符合這個說法。因為太多人(?)自稱 framework,這個詞本身根本已經沒什麼意義了。但就 Django 而言,這個解釋還沒什麼太大問題。