欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

開(kāi)源Web應(yīng)用框架Django圖文教程

 更新時(shí)間:2017年03月09日 08:45:56   作者:銀河系1234  
Python下有許多款不同的 Web 框架。Django是重量級(jí)選手中最有代表性的一位。許多成功的網(wǎng)站和APP都基于Django。Django是一個(gè)開(kāi)放源代碼的Web應(yīng)用框架,由Python寫(xiě)成。下面我們來(lái)一步步學(xué)習(xí)下吧

  本文面向:有python基礎(chǔ),剛接觸web框架的初學(xué)者。

  環(huán)境:windows7   python3.5.1  pycharm專業(yè)版  Django 1.10版  pip3

一、Django簡(jiǎn)介

  百度百科:開(kāi)放源代碼的Web應(yīng)用框架,由Python語(yǔ)言編寫(xiě)......

  重點(diǎn):一個(gè)大而全的框架,啥都替你考慮好了。

1. web框架介紹

  具體介紹Django之前,必須先介紹WEB框架等概念。

  web框架: 別人已經(jīng)設(shè)定好的一個(gè)web網(wǎng)站模板,你學(xué)習(xí)它的規(guī)則,然后“填空”或“修改”成你自己需要的樣子。

  一般web框架的架構(gòu)是這樣的:

  其它基于python的web框架,如tornado、flask、webpy都是在這個(gè)范圍內(nèi)進(jìn)行增刪裁剪的。例如tornado用的是自己的異步非阻塞“wsgi”,flask則只提供了最精簡(jiǎn)和基本的框架。Django則是直接使用了WSGI,并實(shí)現(xiàn)了大部分功能。

2. MVC/MTV介紹

  MVC百度百科:全名Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫(xiě),一種軟件設(shè)計(jì)典范,用一種業(yè)務(wù)邏輯、數(shù)據(jù)、界面顯示分離的方法組織代碼,將業(yè)務(wù)邏輯聚集到一個(gè)部件里面,在改進(jìn)和個(gè)性化定制界面及用戶交互的同時(shí),不需要重新編寫(xiě)業(yè)務(wù)邏輯。

  通俗解釋:一種文件的組織和管理形式!不要被縮寫(xiě)嚇到了,這其實(shí)就是把不同類型的文件放到不同的目錄下的一種方法,然后取了個(gè)高大上的名字。當(dāng)然,它帶來(lái)的好處有很多,比如前后端分離,松耦合等等,就不詳細(xì)說(shuō)明了?!      ?/p>

  模型(model):定義數(shù)據(jù)庫(kù)相關(guān)的內(nèi)容,一般放在models.py文件中。

  視圖(view):定義HTML等靜態(tài)網(wǎng)頁(yè)文件相關(guān),也就是那些html、css、js等前端的東西。

  控制器(controller):定義業(yè)務(wù)邏輯相關(guān),就是你的主要代碼?! ?/p>

  MTV: 有些WEB框架覺(jué)得MVC的字面意思很別扭,就給它改了一下。view不再是HTML相關(guān),而是主業(yè)務(wù)邏輯了,相當(dāng)于控制器。html被放在Templates中,稱作模板,于是MVC就變成了MTV。這其實(shí)就是一個(gè)文字游戲,和MVC本質(zhì)上是一樣的,換了個(gè)名字和叫法而已,換湯不換藥。

3.Django的MTV模型組織

  目錄分開(kāi),就必須有機(jī)制將他們?cè)趦?nèi)里進(jìn)行耦合。在Django中,urls、orm、static、settings等起著重要的作用。一個(gè)典型的業(yè)務(wù)流程是如下圖所示:

那么我們學(xué)Django學(xué)的是什么?

1. 目錄結(jié)構(gòu)規(guī)范

2. urls路由方式

3. settings配置

4.ORM操作

5. 模板渲染

6.其它

二、Django項(xiàng)目實(shí)例

1. 程序安裝

  python3.5、pip3及pycharm專業(yè)版自行安裝。

(1)安裝Django:

  這里只介紹較為簡(jiǎn)單的pip3命令安裝方式。

  win+r,調(diào)出cmd,運(yùn)行命令:pip3 install django,自動(dòng)安裝Pypi提供的最新版本。

安裝完成后如下圖所示:

(2)配置系統(tǒng)環(huán)境

成功安裝Django后,在下圖中的路徑可找到django-admin.exe文件,將它加入操作系統(tǒng)環(huán)境變量中。這樣在以后的調(diào)用會(huì)比較方便。

運(yùn)行:django-admin help,能看到下面的內(nèi)容表示OK。

2. 創(chuàng)建django項(xiàng)目

  在linux等命令行界面下,使用django提供的命令和vim也能進(jìn)行項(xiàng)目開(kāi)發(fā)。但是,這里推薦使用pycharm這個(gè)目前最好的python開(kāi)發(fā)IDE

,它功能強(qiáng)大,界面友好。(下面所有的操作都在pycharm中進(jìn)行。)

  點(diǎn)擊:file-->new project,出現(xiàn)下面的對(duì)話框。

選擇Django欄目,輸入項(xiàng)目名稱,這里采用國(guó)際慣例的mysite。選擇python解釋器版本,點(diǎn)擊create創(chuàng)建。

Django將自動(dòng)生成下面的目錄結(jié)構(gòu):

與項(xiàng)目同名的目錄中是配置文件,templates目錄是html文件存放也就是MTV中的T。manage.py是django項(xiàng)目管理文件。

3. 創(chuàng)建APP

  在每個(gè)django項(xiàng)目中可以包含多個(gè)APP,相當(dāng)于一個(gè)大型項(xiàng)目中的分系統(tǒng)、子模塊、功能部件等等,相互之間比較獨(dú)立,但也有聯(lián)系。

所有的APP共享項(xiàng)目資源。

  在pycharm下方的terminal終端中輸入命令:

  python manage.py startapp cmdb

  這樣就創(chuàng)建了一個(gè)叫做cmdb的APP,django自動(dòng)生成“cmdb”文件夾。

4. 編寫(xiě)路由

  路由都在urls文件里,它將瀏覽器輸入的url映射到相應(yīng)的業(yè)務(wù)處理邏輯。

  簡(jiǎn)單的urls編寫(xiě)方法如下圖:

5. 編寫(xiě)業(yè)務(wù)處理邏輯

  業(yè)務(wù)處理邏輯都在views.py文件里。

  通過(guò)上面兩個(gè)步驟,我們將index這個(gè)url指向了views里的index()函數(shù),它接收用戶請(qǐng)求,并返回一個(gè)“hello world”字符串。

6. 運(yùn)行web服務(wù)

  現(xiàn)在我們已經(jīng)可以將web服務(wù)運(yùn)行起來(lái)了。

  命令行的方式是:python manage.py runserver 127.0.0.1:8000

  但在pycharm中,你可以這么干:

  在上部工具欄中找到下面圖示的圖標(biāo)。

點(diǎn)擊下拉箭頭

點(diǎn)擊edit configurations

在host中填入:127.0.0.1   port中填入:8000

OK確定之后,點(diǎn)擊綠色的三角,web服務(wù)就運(yùn)行起來(lái)了。

按圖所示,自動(dòng)跳轉(zhuǎn)到瀏覽器程序界面。顯示的卻是下圖的404頁(yè)面:

修改一下url,添加“/index”,就一切ok了!

至此,一個(gè)最簡(jiǎn)單的django編寫(xiě)的web服務(wù)就啟動(dòng)成功了。

7. 返回HTML文件

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

  下面,我們寫(xiě)這么一個(gè)index.html文件:

  再修改一下views文件:

為了讓django知道我們的html文件在哪里,需要修改settings文件的相應(yīng)內(nèi)容。但默認(rèn)情況下,它正好適用,你無(wú)需修改。

接下來(lái),我們可以重新啟動(dòng)web服務(wù)。在瀏覽器刷新一下,你會(huì)看到帶有樣式的“hello world”。

注:這里有個(gè)小技巧,在多次頻繁重啟服務(wù)時(shí),由于端口未釋放的原因,容易啟動(dòng)不了服務(wù),修改一下端口就OK了。

8. 使用靜態(tài)文件

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

的頁(yè)面。在django中,一般將靜態(tài)文件放在static目錄中。接下來(lái),在mysite中新建個(gè)static目錄。

你的CSS,JS和各種插件都可以放置在這個(gè)目錄里。

為了讓django找到這個(gè)目錄,依然需要對(duì)settings進(jìn)行配置:

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

重新啟動(dòng)web服務(wù),刷新瀏覽器,查看結(jié)果。

9. 接收用戶發(fā)送的數(shù)據(jù)

  上面,我們將一個(gè)要素齊全的html文件返還給了用戶瀏覽器。但這還不夠,因?yàn)閣eb服務(wù)器和用戶之間沒(méi)有動(dòng)態(tài)交互。

下面我們?cè)O(shè)計(jì)一個(gè)表單,讓用戶輸入用戶名和密碼,提交給index這個(gè)url,服務(wù)器將接收到這些數(shù)據(jù)。

  先修改index.html文件

然后修改views.py文件

此時(shí) ,重啟web服務(wù)時(shí),會(huì)出錯(cuò),因?yàn)閐jango有一個(gè)跨站請(qǐng)求保護(hù)機(jī)制,我們?cè)趕ettings文件中將它關(guān)閉。

再次進(jìn)入瀏覽器,刷新頁(yè)面:

輸入點(diǎn)東西,然后我們?cè)趐ycharm中可以看到相應(yīng)的數(shù)據(jù)。

10. 返回動(dòng)態(tài)頁(yè)面

  我們收到了用戶的數(shù)據(jù),但返回給用戶的依然是個(gè)靜態(tài)頁(yè)面,通常我們會(huì)根據(jù)用戶的數(shù)據(jù),進(jìn)行處理后在返回給用戶。

這時(shí)候,django采用自己的模板語(yǔ)言,類似jinja2,根據(jù)提供的數(shù)據(jù),替換掉html中的相應(yīng)部分,詳細(xì)語(yǔ)法入門(mén)后再深入學(xué)習(xí)。

先改造views.py文件:

再改造index.html文件:

重啟服務(wù),刷新瀏覽器:

可以看到,我們獲得了用戶實(shí)時(shí)輸入的數(shù)據(jù),并將它實(shí)時(shí)展示在了用戶頁(yè)面上,這是個(gè)不錯(cuò)的交互過(guò)程。

11. 使用數(shù)據(jù)庫(kù)

  流程走到這里,django的MTV框架基本已經(jīng)浮出水面了,只剩下最后的數(shù)據(jù)庫(kù)部分了。

  上面我們雖然和用戶交互得很好,但并沒(méi)有保存任何數(shù)據(jù),頁(yè)面一旦關(guān)閉,或服務(wù)器重啟,一切都將回到原始狀態(tài)。

  使用數(shù)據(jù)庫(kù)是毫無(wú)疑問(wèn)的,django通過(guò)自帶的ORM框架操作數(shù)據(jù)庫(kù),并且自帶輕量級(jí)的sqlite3數(shù)據(jù)庫(kù)。下面我們來(lái)看一看:

  首先是注冊(cè)app:

不注冊(cè)它,你的數(shù)據(jù)庫(kù)就不知道該給哪個(gè)app創(chuàng)建表。

然后我們?cè)趕ettings中,配置數(shù)據(jù)庫(kù)相關(guān)的參數(shù),如果使用自帶的sqlite,不需要修改。

再編輯models.py文件,也就是MTV中的M。

這里我們創(chuàng)建了2個(gè)字段,分別保存用戶的名字和密碼。

接下來(lái)要在pycharm的teminal中通過(guò)命令創(chuàng)建數(shù)據(jù)庫(kù)的表了。有2條命令,分別是:

python manage.py makemigrations

再輸入命令:python manage.py migrate

修改views.py中的業(yè)務(wù)邏輯

重啟web服務(wù)后,刷新瀏覽器頁(yè)面,之后和用戶交互的數(shù)據(jù)都能保存到數(shù)據(jù)庫(kù)中。任何時(shí)候都可以從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù),展示到頁(yè)面上。

至此,一個(gè)要素齊全,主體框架展示清晰的django項(xiàng)目完成了,其實(shí)很簡(jiǎn)單是不是?

三、 Django總結(jié)

  作為python必須web框架的Django,它的功能強(qiáng)大,內(nèi)容全面,但同時(shí)也意味著限制頗多,靈活性低,可修改性差,這就是魚(yú)和熊掌不可兼得了。我們學(xué)習(xí)Django,其實(shí)就是學(xué)習(xí)一個(gè)軟件,要理解它的基本原理,把握它整體框架,牢記一些基本規(guī)則,剩下的就是不斷深入細(xì)節(jié),然后熟能生巧、經(jīng)驗(yàn)多少的問(wèn)題了,不存在多高深的不可掌握技術(shù)。

  關(guān)于學(xué)習(xí)方法的建議:學(xué)習(xí)任何東西,不要直接扎入細(xì)節(jié),應(yīng)該先了解它的外圍知識(shí),看看它的整體架構(gòu),再學(xué)習(xí)它的基本內(nèi)容,然后才是深入學(xué)習(xí),打磨技巧!

全文完,有不對(duì)之處懇請(qǐng)指正,覺(jué)得不錯(cuò),就點(diǎn)贊支持一下。

相關(guān)文章

  • Python中的異常處理講解

    Python中的異常處理講解

    這篇文章介紹了Python中的異常處理,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • python編碼問(wèn)題匯總

    python編碼問(wèn)題匯總

    這篇文章主要給大家分享的是python編碼問(wèn)題匯總,字符編碼簡(jiǎn)單介紹和發(fā)展史及使用方法的一些介紹,文章內(nèi)容詳細(xì),具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-03-03
  • python?數(shù)據(jù)挖掘算法的過(guò)程詳解

    python?數(shù)據(jù)挖掘算法的過(guò)程詳解

    這篇文章主要介紹了python?數(shù)據(jù)挖掘算法,首先給大家介紹了數(shù)據(jù)挖掘的過(guò)程,基于sklearn主要的算法模型講解,給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02
  • Tensorflow的常用矩陣生成方式

    Tensorflow的常用矩陣生成方式

    今天小編就為大家分享一篇Tensorflow的常用矩陣生成方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • Python調(diào)用adb命令實(shí)現(xiàn)對(duì)多臺(tái)設(shè)備同時(shí)進(jìn)行reboot的方法

    Python調(diào)用adb命令實(shí)現(xiàn)對(duì)多臺(tái)設(shè)備同時(shí)進(jìn)行reboot的方法

    今天小編就為大家分享一篇Python調(diào)用adb命令實(shí)現(xiàn)對(duì)多臺(tái)設(shè)備同時(shí)進(jìn)行reboot的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • Python手動(dòng)實(shí)現(xiàn)Hough圓變換的示例代碼

    Python手動(dòng)實(shí)現(xiàn)Hough圓變換的示例代碼

    Hough圓變換的原理相信大家都非常清楚了,但是手動(dòng)實(shí)現(xiàn)的比較少。這篇文章將為大家介紹手動(dòng)實(shí)現(xiàn)Hough圓變換的示例代碼,需要的可以了解一下
    2022-01-01
  • 對(duì)python3中pathlib庫(kù)的Path類的使用詳解

    對(duì)python3中pathlib庫(kù)的Path類的使用詳解

    今天小編就為大家分享一篇對(duì)python3中pathlib庫(kù)的Path類的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • Python實(shí)現(xiàn)代碼塊兒折疊

    Python實(shí)現(xiàn)代碼塊兒折疊

    這篇文章主要介紹了Python實(shí)現(xiàn)代碼塊兒折疊方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • python操作sqlite的CRUD實(shí)例分析

    python操作sqlite的CRUD實(shí)例分析

    這篇文章主要介紹了python操作sqlite的CRUD實(shí)現(xiàn)方法,涉及Python操作SQLite數(shù)據(jù)庫(kù)CURD相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • opencv3/C++實(shí)現(xiàn)視頻背景去除建模(BSM)

    opencv3/C++實(shí)現(xiàn)視頻背景去除建模(BSM)

    今天小編就為大家分享一篇opencv3/C++實(shí)現(xiàn)視頻背景去除建模(BSM),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12

最新評(píng)論