Django的Project和App的區別
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中。
相關文章
- django和flask的區別DjangoFlask
- Python,Django建立web專案project和應用appPythonDjangoWebProjectAPP
- django classonlymethod 和 python classmethod的區別DjangoPythonSSM
- app後端和web後端的區別APP後端Web
- django版本區別Django
- Flask框架和Django框架有什麼區別?Flask框架Django
- LinkedList和ArrayList的區別、Vector和ArrayList的區別
- http和https的區別/get和post的區別HTTP
- ../和./和/的區別
- ||和??的區別
- /*和/**的區別
- 開發APP和開發微信小程式的區別?APP微信小程式
- APP測試中IOS和Android的區別,有哪些注意點?APPiOSAndroid
- makefile =和:=的區別
- ++a和a++的區別
- ./ 和sh 的區別
- jquery $(this) 和this的區別jQuery
- JQuery this和$(this)的區別jQuery
- T和?的區別
- cookie與session的區別以及在Django中的實現CookieSessionDjango
- PHP 中的 -> 和 :: 的區別PHP
- 微信小程式和app最大區別在哪微信小程式APP
- 線上直播原始碼的開發較和其他APP的成本區別在哪?原始碼APP
- JS 的型別(null 和 undefined 的區別)JS型別NullUndefined
- law和statute的區別
- thorough和comprehensive的區別
- Velocity和speed的區別
- prerogative和privilge的區別
- postEvent 和 sendEvent的區別dev
- foster和nurture的區別
- @Valid和@Validated的區別
- url和uri的區別
- BeanFactory 和 ApplicationContext 的區別BeanAPPContext
- CAE和CAD的區別
- svn和git的區別Git
- @RestController和@Controller的區別RESTController
- imagine和envisage的區別
- anticipate和expect的區別