你可能會懷疑,為什麼是叫 app,畢竟看到 app 最直觀的想法是 應用程式,但是這麼想其實是有偏差的,畢竟App的原意是一項應用,各式各樣的技術也會產出不同的應用,所以被稱作 應用程式,也不能說它錯拉 ^^”
那這個 apps 跟Day3講到的 project有什麼關聯性?
What’s the difference between a project and an app?
An app is a Web application that does something – e.g., a Weblog system, a database of public records or a simple poll app. A project is a collection of configuration and apps for a particular website. A project can contain multiple apps. An app can be in multiple projects.
根據上述所法,我們可以知道 app 在 Django 代表的是一個網站的應用,這樣講太中式翻譯了!
其實一個 app 所代表的就是一項功能,根據功能的差異來分類app, e.g. 登入功能、點餐功能 …等等
而我們的專案,裡面就會包含各式各樣的功能,雖然 apps 只是我們專案中一部份的內容,但是在Django中,這些 apps的架構都劃分的相當清楚!
Django comes with a utility that automatically generates the basic directory structure of an app, so you can focus on writing code rather than creating directories.
從上面那一句話我們可以明白,Django 很貼心地幫我們完成了小細節的部分,我們只要專注在商業邏輯的撰寫即可^^
那 Django 的 app 要怎麼建呢? 其實就跟 project 一樣簡單!
python manage.py
startapp [app_name]
後方的 [app_name] 只是一個示意 ^^”,不是要你們跟著我打[app_name]
講到這裡,想要分享一個概念
除非是官方正式的Docs,不然千萬不要別人說一句就照打一句,你要盡可能的去思考,這一行指令,背後的用意何在! 有時候官方寫的可能還會有錯(這發生機率很小,但就是有遇到過Q
Anyway,題外話
這裡我先建立一個**歡迎(welcome)**功能的 app
(ithome_enve) C:\Users\User\Desktop\ithome\ithome>python manage.py
startapp welcome
(ithome_enve) C:\Users\User\Desktop\ithome\ithome>tree /F ..
ithome
│ ├───ithome
│ └───welcome
│ │ admin.py
│ │ apps.py
│ │ models.py
│ │ tests.py
│ │ views.py
│ │ __init__.py
│ │
│ └───migrations
│ __init__.py
│ (省略部分內容….)
在創建好 app welcome,可以發現裡面有六個檔案及一個資料夾,分別是
admin.py
: 設定資料庫呈現的模式,之後會跟models溝通
models.py
: 建構你的資料庫型態
tests.py
: 這是拿來檢查商業邏輯的地方,也就是用來測試你的邏輯是否有遺漏,這裡我們沒有要討論太多這方面的議題,但是你要記住,寫測試是一件相當重要的事情,千萬不能小看使用者的潛能
views.py
: 相信你還沒有忘記,在 Day1我們這一位擔任控制者(controller)的身分,沒錯! 它就是寫商業邏輯的地方,它會跟urls.py
做呼應,並將所需傳達給前端
urls.py
: 它擔任著橋樑的角色,讓views.py
與相對的網站做對應。蛤? 你說怎麼沒見到 urls.py
,因為我們要自己建阿^^,在這裡建議可以把內部 ithome的urls.py
複製貼過來就好,但是內容要修改!! 待會再來說明修改的部分
apps.py
: 這裡你只要先了解,這是用來區別app的一個檔案即可
init.py
: 相信大家都還沒有忘記^^,就是告訴Python這資料夾是個套件
migrations : 這資料夾裡面存放的內容,記錄著models裡面所創建的資料庫型態,這部分後面會詳談
介紹完所有app裡面所包含的檔案,我覺得再過不久,你就能慢慢察覺到 Django MVT的精神所在 ^^
我們先試著跟 Django 打聲招呼吧! 打開views.py
(在這,我是使用 Sublime 當作編輯器,至於要使用什麼編輯器,純粹是依照各自的需求跟喜好,沒有絕對^^
接著,我們將 ithome\urls.py複製到 welcome\ 資料夾下,並將裡面的內容修改如下
因為上面的是針對welcome裡的url做對應(類似區域性概念),我們也要對廣域的ithome裡的urls.py做修改
而 include 概念就是,它會將 weclome.urls 下的所有 url 前面都冠上 welcome/的意思,這樣子你才不會說在 welcome.urls 裡的每一個 url都要加上 welcome/,這樣多累阿 ^^”
這樣整個架構都建好了,接下來我們來 run 看看結果吧! 應該還沒忘記指令吧 ^^

預設是空畫面是正常的,因為預設畫面本來就還沒有設定囉!
所以只要將網址後面加上 /welcome/ 即可!
大功告成!!
呼,希望上面的式意圖能讓你大致上了解整個架構是怎麼兜起來的 ^^
那今天就先醬拉,明天見~
學海無涯,回頭是岸,不進則退,至少希望明天的自己都能比今天多了解一些知識 From BY