什麼是Django?

Hello,我是 Alex 007,一個熱愛計算機編程和硬件設計的小白,爲啥是007呢?因爲叫 Alex 的人太多了,再加上每天007的生活,Alex 007就誕生了。

在這第一篇Django文章中,我們來討論一下“什麼是Django?”這個問題,並概述這個網絡框架有什麼特性和功能,包括一些高級功能,還會展示一些Django應用程序的主要構建模塊,但我們並不會在本節中詳細介紹,因爲此時你還沒有相應的DJango開發環境。
在這裏插入圖片描述

預備知識:對服務器端網站編程一般瞭解,特別是網站中客戶端-服務端交互的機制。
目標:瞭解Django是什麼,它提供了哪些功能,以及Django應用程序的主要構建塊。

什麼是Django?

Django 是一個高級的Python 網路框架,可以快速開發安全和可維護的網站。它是免費和開源的,有活躍繁榮的社區、豐富的文檔、以及很多免費或付費的解決方案。

使用Django開發的應用具有以下優點:

完備
Django遵循“功能完備”的理念,提供給開發人員“開箱即用”的所有功能。你需要的一切,都是一個”產品“的一部分,它們都可以無縫結合在一起,遵循一致性設計原則,並且具有廣泛、和最新的文檔。
通用

Django 可以用於構建幾乎任何類型的網站,從內容管理系統,到社交網絡和新聞網站。它可以與任何客戶端框架一起工作,並且可以提供幾乎任何格式(包括HTML、RSS、JSON、XML等)的內容。

在內部,儘管它爲幾乎所有可能需要的功能(例如幾個流行的資料庫,模版引擎等)提供了選擇,但是如果需要,它也可以擴展到使用其他組件。

安全

Django 幫助開發人員,通過提供一個被設計爲“做正確的事情” 來自動保護網站的框架,來避免許多常見的安全錯誤。例如,Django 提供了一種安全的方式,來管理用戶帳號和密碼,避免了常見的錯誤,比如將session 放在cookie 裏這種易受攻擊的做法,取而代之的是,cookies 只包含一個密鑰,實際數據存儲在數據庫中,或直接明文存儲密碼,取而代之的是密碼的hash 值。

默認情況下,Django 可以防範許多漏洞,包括SQL 注入,跨站點腳本,跨站點請求僞造,和點擊劫持等等。

可擴展
Django 使用基於組件的“無共享” 架構,也就是架構的每一部分獨立於其他架構,因此可以根據需要進行替換或更改。在不同部分之間,有明確的分隔,意味着它可以通過在任何級別添加組件,來擴展服務。
可維護
Django代碼編寫,遵照設計原則和模式,鼓勵創建可維護和可重複使用的代碼。特別是,它使用了不要重複自己(DRY)原則,所以沒有不必要的重複,減少了代碼的數量。
可移植
Django 是用Python 編寫的,它在許多平臺上運行。這意味着,Django應用不受特定的服務器平臺的限制,並且可以在許多種類的Linux,Windows 和Mac OS 上運行應用程序。

Django的起源?

Django 最初在2003 年到2005 年間,由負責創建和維護報紙網站的網絡團隊開發。在創建了許多網站後,團隊開始考慮、並重用許多常見的代碼和設計模式。這些共同的代碼,最終演變成了一個通用的網絡開發框架,2005 年7 月,被開源爲“Django” 項目。

Django 不斷髮展壯大,從2008 年9 月的第一個里程碑版本(1.0),到2018年發佈的(2.0)版本。每個版本都添加了新功能,和錯誤修復,從支持新類型的數據庫,模版引擎和緩存,到添加“通用” 視圖函數和類別,極大程度上減少了開發人員在一些編程任務中必須編寫的代碼量 。

Django 現在是一個蓬勃發展的合作開源項目,擁有數千個用戶和貢獻者。雖然它仍然具有反映其起源的一些功能,但Django 已經發展成爲,能夠開發任何類型的網站的多功能框架。

Django有多受歡迎?

服務器端框架的受歡迎程度沒有任何可靠和明確的測量。一個更好的問題是Django是否“足夠流行”。它是否繼續發展?如果您需要幫助,可以幫您嗎?如果您學習Django,有機會獲得工作嗎?基於使用Django的流行網站數量有多少?爲代碼庫貢獻的人數以及提供免費或付費支持的人數有多少?這些都是判斷一個框架是否流行的標準。

Django 代碼是什麼樣子?

在傳統的數據驅動網站中,Web應用程序會等待來自Web瀏覽器或其他客戶端的HTTP請求。當Django接收到請求時,應用程序根據URL和可能的POST數據或GET數據中的信息確定需要的內容。根據需要,可以從數據庫讀取或寫入信息,或執行滿足請求所需的其他任務。然後,該應用程序將返回給Web瀏覽器或客戶端響應。

Django 網絡應用程序通常將處理每個步驟的代碼分組到單獨的文件中:

  • URLs:雖然可以通過單個功能來處理來自每個URL的請求,但是編寫單獨的視圖函數來處理每個資源是更加可維護的。URL控制器用於根據請求URL將HTTP請求重定向到相應的視圖,還可以匹配出現在URL中的字符串或數字,並將其作爲數據傳遞給視圖函數。
  • View: 視圖是一個請求處理函數,它接收HTTP請求並返回HTTP響應。視圖通過模型訪問滿足請求所需的數據,並將響應的格式委託給模板。
  • Models: 模型是定義應用程序數據結構的Python對象,並提供在數據庫中增、刪、改、查記錄的機制。
  • Templates: 模板是定義文件(例如HTML頁面)的結構或佈局的文本文件,用於表示實際內容的佔位符。一個視圖可以使用HTML模板,從數據填充它動態地創建一個HTML頁面模型。可以使用模板來定義任何類型的文件的結構;它不一定是HTML!

URL控制器(urls.py)

URL控制器通常存儲在名爲urls.py的文件中。在下面的示例中,urlpatterns定義了特定URL模式和相應視圖函數之間的映射列表。如果接收到具有與指定模式匹配的URL(例如r'^$',下面)的HTTP請求,則將調用相關聯的視圖功能(例如views.index)並傳遞請求。

urlpatterns = [
    path('admin/', admin.site.urls),
    path('book/<int:id>/', views.book_detail, name='book_detail'),
    path('catalog/', include('catalog.urls')),
    re_path(r'^([0-9]+)/$', views.best),
]

urlpatterns對象是path()和/或re_path()函數的列表。

兩種方法的第一個參數,是將要匹配的路由(模式)。 path()方法使用尖括號,來定義將被捕獲、並作爲命名參數傳遞給視圖函數的URL的部分。 re_path()函數使用靈活的模式匹配方法,稱爲正則表達式。

第二個參數,是在匹配模式時將調用的另一個函數。註釋views.book_detail表示該函數名爲book_detail(),可以在名爲views的模塊中找到(即在名爲views.py的文件中)

處理請求(views.py)

視圖是Web應用程序的核心,從Web客戶端接收HTTP請求並返回HTTP響應。在兩者之間,通過Django框架編寫視圖函數處理資源、訪問數據庫和渲染模板等。

定義數據模型(models.py)

Django Web應用程序,通過被稱爲模型的Python對象,來管理和查詢數據。模型定義存儲數據的結構,包括字段類型以及字段可能的最大值,默認值,選擇列表選項,幫助文本,表單的標籤文本等。模型的定義與底層數據庫無關,一旦您選擇了要使用的數據庫,您就不需要直接與之交互,而是編寫模型結構和其他代碼,Django可以處理與數據庫通信的所有辛苦的工作。

查詢數據(views.py)

Django模型提供了一個,用於搜索數據庫的簡單查詢API。這可以使用不同的標準(例如,精確,不區分大小寫,大於等等)來匹配多個字段,並且可以支持複雜語句。

呈現數據(HTML模版)

模板系統允許您使用佔位符指定輸出文檔的結構,以便在生成頁面時填充數據。模板通常用於創建HTML,但也可以創建其他類型的文檔。Django支持其本機模板系統,和另一個流行的Python庫,名爲Jinja2。

Django還能做什麼?

前面的部分,展示了幾乎每個Web應用程序將使用的主要功能:URL映射,視圖,模型和模版。Django還提供了其他內容,包括:

  • 表單 : HTML表單用於收集用戶數據,以便在服務器上進行處理。Django簡化了表單創建,驗證和處理。
  • 用戶身份驗證和權限 : Django包含了一個強大的用戶身份驗證和權限系統。
  • 緩存 :與提供靜態內容相比,動態創建內容需要更強大的計算強度。Django提供靈活的緩存,如無必要,不會重新加載網頁。
  • 管理網站 :當你使用Django創建應用時,就已經默認包含了一個Django管理站點。通過它可以十分輕鬆地創建一個管理頁面,使網站管理員能夠創建、編輯和查看站點中的數據模型。
  • 序列化數據 : Django可以輕鬆地將數據序列化,並支持XML或JSON格式。這會有助於使用Django創建一個Web服務,或是創建一個在客戶端進行代碼處理、和呈現所有數據的網站。

總結

恭喜,您已經完成了Django之旅的第一步!你現在應該已經瞭解了Django的主要優點,一些關於它的歷史,以及Django應用程序的每個主要部分可能是什麼樣子的。

下一步我們來安裝一下Django。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章