Django是一個非常流行的用python編寫的Web架構,在使用Django之前,我們需要了解一些基本的概念,這樣可以在使用Django的時候對其有一個更加深入的把握。本文主要介紹Django中兩個非常基礎但又是很多初學者不太明白的概念:project和app.
Project
其實在計算機領域,要真正了解一個東西,莫過于親自去閱讀它的源代碼;同理,對于Django中的project和app,我們也可以采用類似的方法。我們可以通過指令:
django-admin.py startproject mysite
來建立一個新的project,之後我們可以在目前目錄下看到如下目錄結構:
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
其中manage.py是在開發web項目時經常用到的工具,如:python manage.py runserver localhost:8000 ; python manage.py syndb 等等,而在内部的mysite目錄下放着四個py檔案,其中__init__.py用于說明内部的mysite目錄是一個python子產品,打開settings.py檔案,我們可以看到一些基本的配置資訊,包括資料庫配置,時區,安裝的APP,中間件,日志配置,以及一些基本的目錄配置等,其本質上相當于一個基本的web工程的全局配置。urls.py檔案中包含一個urlpatterns變量,其實它就是一個URL Dispacher(URL分派器),用于在URL和實際的view之間建立一個映射。
App
在建立完project之後,我們可以通過指令:python manage.py startapp polls建立一個名叫polls的app,然後整個目錄結構變成如下所示:
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
polls/
__init__.py
models.py
views.py
test.py
很顯然,上述紅色部分是多出來的,即運作上述指令後做的一些事情, 其中 __init__.py用于說明polls目錄是一個python子產品,models.py中包含一系列的模型類,每個模型類對應資料庫中的一個表,這之間的映射由Django來做,有關資料庫的配置在mysite/settings.py中。而views.py中包含的是對各個請求的處理邏輯,前面說的URL Dispacher即将URL請求映射到這個檔案中的函數或類方法上。同時可以在polls目錄下建立template目錄,然後将前台的html,css,script等内容放置在這個目錄下,并在setttings.py檔案添加相應的配置資訊。是以,我們其實可以看到APP相當于一個相對獨立的功能子產品,其遵循的設計理念是MVT(類似MVC);在一個大型的Project中,可以包含很多APP,而且每個APP可以在不同的Project中複用,這也符合Django的程式設計理念,即:不要做重複的事情。
綜上所述,project和APP的差別已經很明顯了,project包含一些全局配置,這些配置構成一個全局的運作平台,各個APP都運作在這個全局的運作平台上,而APP代表的是一個相對獨立的功能子產品,是以程式的邏輯都在APP中。