最簡單的 Django 教程
一、Django 簡介
1. web 框架介紹
具體介紹 Django 之前,必須先介紹 WEB 框架等概念。
**web 框架:**別人已經設定好的一個 web 網站模板,你學習它的規則,然後 “填空” 或“修改”成你自己需要的樣子。
一般 web 框架的架構是這樣的:
其它基於 python 的 web 框架,如 tornado、flask、webpy 都是在這個範圍內進行增刪裁剪的。例如 tornado 用的是自己的異步非阻塞 “wsgi”,flask 則只提供了最精簡和基本的框架。Django 則是直接使用了 WSGI,並實現了大部分功能。
2. MVC/MTV 介紹
MVC 百度百科:全名 Model View Controller,是模型 (model)-視圖(view)-控制器(controller) 的縮寫,一種軟件設計典範,用一種業務邏輯、數據、界面顯示分離的方法組織代碼,將業務邏輯聚集到一個部件裏面,在改進和個性化定製界面及用戶交互的同時,不需要重新編寫業務邏輯。
**通俗解釋:**一種文件的組織和管理形式!不要被縮寫嚇到了,這其實就是把不同類型的文件放到不同的目錄下的一種方法,然後取了個高大上的名字。當然,它帶來的好處有很多,比如前後端分離,松耦合等等,就不詳細說明了。
**模型 (model):**定義數據庫相關的內容,一般放在 models.py 文件中。
**視圖 (view):**定義 HTML 等靜態網頁文件相關,也就是那些 html、css、js 等前端的東西。
**控制器 (controller):**定義業務邏輯相關,就是你的主要代碼。
MTV: 有些 WEB 框架覺得 MVC 的字面意思很彆扭,就給它改了一下。view 不再是 HTML 相關,而是主業務邏輯了,相當於控制器。html 被放在 Templates 中,稱作模板,於是 MVC 就變成了 MTV。這其實就是一個文字遊戲,和 MVC 本質上是一樣的,換了個名字和叫法而已,換湯不換藥。
3.Django 的 MTV 模型組織
目錄分開,就必須有機制將他們在內裏進行耦合。在 Django 中,urls、orm、static、settings 等起着重要的作用。一個典型的業務流程是如下圖所示:
二、Django 項目實例
1. 程序安裝
python3.5、pip3 及 pycharm 專業版自行安裝。pycharm 不要使用免費版,它不支持 Django。
(1)安裝 Django:
http://www.cnblogs.com/qianyuliang/p/6729298.html
2. 創建 django 項目
在 linux 等命令行界面下,使用 django 提供的命令和 vim 也能進行項目開發。但是,這裏使用 eclipse
點擊:file-->project,出現下面的對話框。
選擇 PyDev/Django 欄目,輸入項目名稱,這裏採用國際慣例的 mysite。
然後一直 next 就可以了
Django 將自動生成下面的目錄結構:
與項目同名的目錄中是配置文件,templates 目錄是 html 文件存放也就是 MTV 中的 T(手動新建)。manage.py 是 django 項目管理文件。
- 創建 APP
在每個 django 項目中可以包含多個 APP,相當於一個大型項目中的分系統、子模塊、功能部件等等,相互之間比較獨立,但也有聯繫。
所有的 APP 共享項目資源。
右鍵點擊 mysite--->Django--->Create application
這樣就創建了一個叫做 app01 的 APP,django 自動生成 “app01” 文件夾。
- 編寫路由
路由都在 urls 文件裏,它將瀏覽器輸入的 url 映射到相應的業務處理邏輯。
簡單的 urls 編寫方法如下圖:
- 編寫業務處理邏輯
業務處理邏輯都在 views.py 文件裏。
通過上面兩個步驟,我們將 index 這個 url 指向了 views 裏的 index()函數,它接收用戶請求,並返回一個 “hello world” 字符串。
- 運行 web 服務
現在我們已經可以將 web 服務運行起來了。
記得將 app01 寫入到 settings.py 中
命令行的方式是:python manage.py runserver 127.0.0.1:8000
在 eclipse 中 --->run configurations
有這個提示,則表示啓動成功,然後打開瀏覽器,輸入 127.0.0.1:8000
修改一下 url,添加 “/index”,就一切 ok 了!
- 返回 HTML 文件
上面我們返回給用戶瀏覽器的是什麼?一個字符串!實際上這肯定不行,通常我們都是將 html 文件返回給用戶。
下面,我們寫這麼一個 index.html 文件:
再修改一下 views 文件:
爲了讓 django 知道我們的 html 文件在哪裏,需要修改 settings 文件的相應內容。但默認情況下,它正好適用,你無需修改。
接下來,我們可以重新啓動 web 服務。在瀏覽器刷新一下,你會看到帶有樣式的 “hello world”。
- 使用靜態文件
我們已經可以將 html 文件返還給用戶了,但是還不夠,前端三大塊,html、css、js 還有各種插件,它們齊全才是一個完整
的頁面。在 django 中,一般將靜態文件放在 static 目錄中。接下來,在 mysite 中新建個 static 目錄。
你的 CSS,JS 和各種插件都可以放置在這個目錄裏。
爲了讓 django 找到這個目錄,依然需要對 settings 進行配置:
同樣,在 index.html 文件中,可以引入 js 文件了:
重新啓動 web 服務,刷新瀏覽器,查看結果。
- 接收用戶發送的數據
上面,我們將一個要素齊全的 html 文件返還給了用戶瀏覽器。但這還不夠,因爲 web 服務器和用戶之間沒有動態交互。
下面我們設計一個表單,讓用戶輸入用戶名和密碼,提交給 index 這個 url,服務器將接收到這些數據。
先修改 index.html 文件
然後修改 views.py 文件
此時 ,重啓 web 服務時,會出錯,因爲 django 有一個跨站請求保護機制,我們在 settings 文件中將它關閉。
再次進入瀏覽器,刷新頁面:
- 返回動態頁面
我們收到了用戶的數據,但返回給用戶的依然是個靜態頁面,通常我們會根據用戶的數據,進行處理後在返回給用戶。
這時候,django 採用 jinja2 語言編寫動態模板,jinja2 會根據提供的數據,替換掉 html 中的相應部分,詳細語法入門後再深入學習。
先改造 views.py 文件:
再改造 index.html 文件:
重啓服務,刷新瀏覽器:
可以看到,我們獲得了用戶實時輸入的數據,並將它實時展示在了用戶頁面上,這是個不錯的交互過程。
- 使用數據庫
流程走到這裏,django 的 MTV 框架基本已經浮出水面了,只剩下最後的數據庫部分了。
上面我們雖然和用戶交互得很好,但並沒有保存任何數據,頁面一旦關閉,或服務器重啓,一切都將回到原始狀態。
使用數據庫是毫無疑問的,下面使用 mysql 數據
在 settings 中,配置數據庫相關的參數,如果使用自帶的 sqlite,不需要修改。然後在 mysql 數據庫創建 mysite 庫
再編輯 models.py 文件,也就是 MTV 中的 M。
這裏我們創建了 2 個字段,分別保存用戶的名字和密碼。
接下來要在後臺中通過命令創建數據庫的表了。有 2 條命令,分別是:
python manage.py makemigrations
再輸入命令:python manage.py migrate
或者在 eclipse 中,右鍵點擊 mysite--->django--->makemigrations
然後右鍵點擊 mysite--->django--->migrate
修改 views.py 中的業務邏輯
重啓 web 服務後,刷新瀏覽器頁面,之後和用戶交互的數據都能保存到數據庫中。任何時候都可以從數據庫中讀取數據,展示到頁面上。
至此,一個要素齊全,主體框架展示清晰的 django 項目完成了,其實很簡單是不是?
三、 Django 總結
作爲 python 必須 web 框架的 Django,它的功能強大,內容全面,但同時也意味着限制頗多,靈活性低,可修改性差,這就是魚和熊掌不可兼得了。
我們學習 Django,其實就是學習一個軟件,要理解它的基本原理,把握它整體框架,牢記一些基本規則,剩下的就是不斷深入細節,然後熟能生巧、經驗多少的問題了,不存在多高深的不可掌握技術。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/DMS11tq8TeM0DvNazlxNPA