Django 簡單教程,django教程

來源:互聯網
上載者:User

Django 簡單教程,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專案管理檔案。

3. 建立APP

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

所有的APP共用項目資源。

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

這樣就建立了一個叫做app01的APP,django自動產生“app01”檔案夾。

4. 編寫路由

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

  簡單的urls編寫方法如: 

5. 編寫業務處理邏輯

  業務處理邏輯都在views.py檔案裡。

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

 

6. 運行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服務就啟動成功了。

7.  返回HTML檔案

  上面我們返回給使用者瀏覽器的是什嗎?一個字串!實際上這肯定不行,通常我們都是將html檔案返回給使用者。

  下面,我們寫這麼一個index.html檔案:

再修改一下views檔案:

為了讓django知道我們的html檔案在哪裡,需要修改settings檔案的相應內容。但預設情況下,它正好適用,你無需修改。

 

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

8. 使用靜態檔案

  我們已經可以將html檔案返還給使用者了,但是還不夠,前端三大塊,html、css、js還有各種外掛程式,它們齊全才是一個完整

的頁面。在django中,一般將靜態檔案放在static目錄中。接下來,在mysite中建立個static目錄。

你的CSS,JS和各種外掛程式都可以放置在這個目錄裡。

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

同樣,在index.html檔案中,可以引入js檔案了:

 

重新啟動web服務,重新整理瀏覽器,查看結果。

9. 接收使用者發送的資料

  上面,我們將一個要素齊全的html檔案返還給了使用者瀏覽器。但這還不夠,因為web伺服器和使用者之間沒有動態互動。

下面我們設計一個表單,讓使用者輸入使用者名稱和密碼,提交給index這個url,伺服器將接收到這些資料。

  先修改index.html檔案

 

然後修改views.py檔案

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

再次進入瀏覽器,重新整理頁面:

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

10. 返回動態網頁面

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

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

先改造views.py檔案:

再改造index.html檔案:

重啟服務,重新整理瀏覽器:

可以看到,我們獲得了使用者即時輸入的資料,並將它即時展示在了使用者頁面上,這是個不錯的互動過程。

11. 使用資料庫

  流程走到這裡,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,其實就是學習一個軟體,要理解它的基本原理,把握它整體架構,牢記一些基本規則,剩下的就是不斷深入細節,然後熟能生巧、經驗多少的問題了,不存在多高深的不可掌握技術。 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.