二、Django需要的知識點
1、請求(request): 客戶端到伺服器端。
響應(response):伺服器端到客戶端。
HTTP/1.1 協議共定義了 8 種請求方式,分別是: OPTIONS、 HEAD、 GET、 POST、 PUT、 DELETE、 TRACE 和 CONNECT.
GET:向指定的伺服器發出請求,主要用於讀取資訊並顯示。
POST:向指定伺服器提交資料,請求伺服器進行處理(例如提交表單或者上傳檔案)。
http預設80埠,https預設443。
2、路徑:以“/”區別目錄。對於 GET 請求方式,還可以用“?”發起引數,每個引數以 “&”隔開,再以“=”分開引數名稱與值。
3、Python 本身有讀取資料庫的模組 ,所以可以通過 SQL 語句直接實現程式和資料庫的互動。 Django 用另外一種方式解決了這個問題, 在這種方式中不需要開發者使用 SQL 語句,而是使用更 Python 化的方式實現對資料庫的操作, 這就是 ORM,即 Object-Relational Mapping (物件關係對映)。
ORM 的作用是在關係型資料庫和業務實體物件之間進行對映,這樣在操作業務物件時,就 不需要再去和複雜的 SQL 語句打交道,只需簡單地操作物件的屬性和方法。
(1)可移植性強。 ORM 通常具有很好的可移植性,本書中使用 SQLite 資料庫,如果想改為 MySQL 資料庫,只需要在 settings.py 檔案中做好新資料庫的配置,然後進行遷移資料的操作(python manage.py makemigrations, python manage.py migrate)就能夠建立相應的資料庫表,不需要對 ORM 進行任何修改。
(2)安全性好。 使用 ORM 後很少或者不需要執行 SQL,所以這時就不必擔心諸如 SQL 注入等形式的攻擊了,更何況 ORM 還提供了一個 自動引用和轉義輸入變數的機制, 開發者不用在安全性的問題上花費太多時間,可以將精力集中在程式的業務邏輯和 開發上。
(3)查詢語法簡單。面對較為複雜的查詢,如果使用 SQL 語句,常常要寫很多:而使用 ORM, 因為它本質上就是 Python 物件,能夠讓本來複雜的 SQL 語句變得簡潔,所以能夠實現 更多的技巧。
Django 的 ORM 表現方式就是編寫資料模型類,這些類可以寫到任何檔案中,通常寫在每 個應用的 models.py 檔案中。
每個資料模型類都是 django.db.models.Model 的子類。應用的名稱 (小寫字母)和資料模型類的名稱(小寫字母)共同組成一個數據庫表的名稱(“appname”_“model name”,例如 blog_blogarticles)。
當資料模型類寫好之後,通過執行 Django 的資料遷移操作(python manage.py makemigrations, python manage.py migrate)就能夠建立相應的資料庫表,用來儲存網站專案的資料。
以後如果要修改資料庫表的結構, 只需要修改資料模型類,遷移資料(python manage.py makemigrations, python manage.py migrate)就能夠實現資料庫結構的調整。