Django的Project和App的區別

hiekay發表於2019-01-30

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中。


相關文章