最簡單的 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 項目管理文件。

  1. 創建 APP

在每個 django 項目中可以包含多個 APP,相當於一個大型項目中的分系統、子模塊、功能部件等等,相互之間比較獨立,但也有聯繫。

所有的 APP 共享項目資源。

右鍵點擊 mysite--->Django--->Create application

這樣就創建了一個叫做 app01 的 APP,django 自動生成 “app01” 文件夾。

  1. 編寫路由

路由都在 urls 文件裏,它將瀏覽器輸入的 url 映射到相應的業務處理邏輯。

簡單的 urls 編寫方法如下圖:

  1. 編寫業務處理邏輯

業務處理邏輯都在 views.py 文件裏。

通過上面兩個步驟,我們將 index 這個 url 指向了 views 裏的 index()函數,它接收用戶請求,並返回一個 “hello world” 字符串。

  1. 運行 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 了!

至此,一個最簡單的 django 編寫的 web 服務就啓動成功了。

  1. 返回 HTML 文件

上面我們返回給用戶瀏覽器的是什麼?一個字符串!實際上這肯定不行,通常我們都是將 html 文件返回給用戶。

下面,我們寫這麼一個 index.html 文件:

再修改一下 views 文件:

爲了讓 django 知道我們的 html 文件在哪裏,需要修改 settings 文件的相應內容。但默認情況下,它正好適用,你無需修改。

接下來,我們可以重新啓動 web 服務。在瀏覽器刷新一下,你會看到帶有樣式的 “hello world”。

  1. 使用靜態文件

我們已經可以將 html 文件返還給用戶了,但是還不夠,前端三大塊,html、css、js 還有各種插件,它們齊全才是一個完整

的頁面。在 django 中,一般將靜態文件放在 static 目錄中。接下來,在 mysite 中新建個 static 目錄。

你的 CSS,JS 和各種插件都可以放置在這個目錄裏。

爲了讓 django 找到這個目錄,依然需要對 settings 進行配置:

同樣,在 index.html 文件中,可以引入 js 文件了:

重新啓動 web 服務,刷新瀏覽器,查看結果。

  1. 接收用戶發送的數據

上面,我們將一個要素齊全的 html 文件返還給了用戶瀏覽器。但這還不夠,因爲 web 服務器和用戶之間沒有動態交互。

下面我們設計一個表單,讓用戶輸入用戶名和密碼,提交給 index 這個 url,服務器將接收到這些數據。

先修改 index.html 文件

然後修改 views.py 文件

此時 ,重啓 web 服務時,會出錯,因爲 django 有一個跨站請求保護機制,我們在 settings 文件中將它關閉。

再次進入瀏覽器,刷新頁面:

輸入點東西,然後我們在 eclipse 中可以看到相應的數據。

  1. 返回動態頁面

我們收到了用戶的數據,但返回給用戶的依然是個靜態頁面,通常我們會根據用戶的數據,進行處理後在返回給用戶。

這時候,django 採用 jinja2 語言編寫動態模板,jinja2 會根據提供的數據,替換掉 html 中的相應部分,詳細語法入門後再深入學習。

先改造 views.py 文件:

再改造 index.html 文件:

重啓服務,刷新瀏覽器:

可以看到,我們獲得了用戶實時輸入的數據,並將它實時展示在了用戶頁面上,這是個不錯的交互過程。

  1. 使用數據庫

流程走到這裏,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