<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          最簡單的 Django 教程

          共 4576字,需瀏覽 10分鐘

           ·

          2021-07-29 01:12

          一、Django簡介

          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則只提供了最精簡和基本的框架。Django則是直接使用了WSGI,并實(shí)現(xiàn)了大部分功能。
          2. MVC/MTV介紹
          MVC百度百科:全名Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設(shè)計(jì)典范,用一種業(yè)務(wù)邏輯、數(shù)據(jù)、界面顯示分離的方法組織代碼,將業(yè)務(wù)邏輯聚集到一個(gè)部件里面,在改進(jìn)和個(gè)性化定制界面及用戶交互的同時(shí),不需要重新編寫業(yè)務(wù)邏輯。
          通俗解釋:一種文件的組織和管理形式!不要被縮寫嚇到了,這其實(shí)就是把不同類型的文件放到不同的目錄下的一種方法,然后取了個(gè)高大上的名字。當(dāng)然,它帶來的好處有很多,比如前后端分離,松耦合等等,就不詳細(xì)說明了。
          模型(model):定義數(shù)據(jù)庫相關(guān)的內(nèi)容,一般放在models.py文件中。
          視圖(view):定義HTML等靜態(tài)網(wǎng)頁文件相關(guān),也就是那些html、css、js等前端的東西。
          控制器(controller):定義業(yè)務(wù)邏輯相關(guān),就是你的主要代碼。
          MTV: 有些WEB框架覺得MVC的字面意思很別扭,就給它改了一下。view不再是HTML相關(guān),而是主業(yè)務(wù)邏輯了,相當(dāng)于控制器。html被放在Templates中,稱作模板,于是MVC就變成了MTV。這其實(shí)就是一個(gè)文字游戲,和MVC本質(zhì)上是一樣的,換了個(gè)名字和叫法而已,換湯不換藥。
          3.Django的MTV模型組織
          目錄分開,就必須有機(jī)制將他們在內(nèi)里進(jìn)行耦合。在Django中,urls、orm、static、settings等起著重要的作用。一個(gè)典型的業(yè)務(wù)流程是如下圖所示:

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

          1. 程序安裝

          python3.5、pip3及pycharm專業(yè)版自行安裝。pycharm不要使用免費(fèi)版,它不支持Django。

          (1)安裝Django:

          http://www.cnblogs.com/qianyuliang/p/6729298.html

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

          在linux等命令行界面下,使用django提供的命令和vim也能進(jìn)行項(xiàng)目開發(fā)。但是,這里使用eclipse

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

          選擇PyDev/Django欄目,輸入項(xiàng)目名稱,這里采用國際慣例的mysite。

          然后一直next就可以了

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

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

          1. 創(chuàng)建APP

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

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

          右鍵點(diǎn)擊mysite--->Django--->Create application

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

          1. 編寫路由

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

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

          1. 編寫業(yè)務(wù)處理邏輯

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

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

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

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

          記得將app01寫入到settings.py中

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

          在eclipse中--->run configurations

          有這個(gè)提示,則表示啟動(dòng)成功,然后打開瀏覽器,輸入127.0.0.1:8000

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

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

          1. 返回HTML文件

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

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

          再修改一下views文件:

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

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

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

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

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

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

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

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

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

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

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

          下面我們設(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ī)制,我們在settings文件中將它關(guān)閉。

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

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

          1. 返回動(dòng)態(tài)頁面

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

          這時(shí)候,django采用jinja2語言編寫動(dòng)態(tài)模板,jinja2會(huì)根據(jù)提供的數(shù)據(jù),替換掉html中的相應(yīng)部分,詳細(xì)語法入門后再深入學(xué)習(xí)。

          先改造views.py文件:

          再改造index.html文件:

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

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

          1. 使用數(shù)據(jù)庫

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

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

          使用數(shù)據(jù)庫是毫無疑問的,下面使用mysql數(shù)據(jù)

          在settings中,配置數(shù)據(jù)庫相關(guān)的參數(shù),如果使用自帶的sqlite,不需要修改。然后在mysql數(shù)據(jù)庫創(chuàng)建mysite庫

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

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

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

          python manage.py makemigrations

          再輸入命令:python manage.py migrate

          或者在eclipse中,右鍵點(diǎn)擊mysite--->django--->makemigrations

          然后右鍵點(diǎn)擊mysite--->django--->migrate

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

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

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

          三、 Django總結(jié)

          作為python必須web框架的Django,它的功能強(qiáng)大,內(nèi)容全面,但同時(shí)也意味著限制頗多,靈活性低,可修改性差,這就是魚和熊掌不可兼得了。

          我們學(xué)習(xí)Django,其實(shí)就是學(xué)習(xí)一個(gè)軟件,要理解它的基本原理,把握它整體框架,牢記一些基本規(guī)則,剩下的就是不斷深入細(xì)節(jié),然后熟能生巧、經(jīng)驗(yàn)多少的問題了,不存在多高深的不可掌握技術(shù)。


          福利

          入門Python的最強(qiáng)三件套《ThinkPython》、《簡明Python教程》、《Python進(jìn)階》的PDF電子版已打包提供給大家,關(guān)注下方公眾號(hào),在后臺(tái)回復(fù)關(guān)鍵字P3」即可獲取。




          推薦閱讀:

          入門: 最全的零基礎(chǔ)學(xué)Python的問題  | 零基礎(chǔ)學(xué)了8個(gè)月的Python  | 實(shí)戰(zhàn)項(xiàng)目 |學(xué)Python就是這條捷徑


          干貨:爬取豆瓣短評(píng),電影《后來的我們》 | 38年NBA最佳球員分析 |   從萬眾期待到口碑撲街!唐探3令人失望  | 笑看新倚天屠龍記 | 燈謎答題王 |用Python做個(gè)海量小姐姐素描圖 |碟中諜這么火,我用機(jī)器學(xué)習(xí)做個(gè)迷你推薦系統(tǒng)電影


          趣味:彈球游戲  | 九宮格  | 漂亮的花 | 兩百行Python《天天酷跑》游戲!


          AI: 會(huì)做詩的機(jī)器人 | 給圖片上色 | 預(yù)測收入 | 碟中諜這么火,我用機(jī)器學(xué)習(xí)做個(gè)迷你推薦系統(tǒng)電影


          小工具: Pdf轉(zhuǎn)Word,輕松搞定表格和水印! | 一鍵把html網(wǎng)頁保存為pdf!|  再見PDF提取收費(fèi)! | 用90行代碼打造最強(qiáng)PDF轉(zhuǎn)換器,word、PPT、excel、markdown、html一鍵轉(zhuǎn)換 | 制作一款釘釘?shù)蛢r(jià)機(jī)票提示器! |60行代碼做了一個(gè)語音壁紙切換器天天看小姐姐!


          年度爆款文案


          點(diǎn)閱讀原文,領(lǐng)廖雪峰視頻資料!

          瀏覽 20
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  一区二区三区熟女 | 欧美大生殖器在线观看 | 国产精品av在线观看 | 超碰成人免费 | 黄色视屏久久 |