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
- django classonlymethod 和 python classmethod的區別DjangoPythonSSM
- Python,Django建立web專案project和應用appPythonDjangoWebProjectAPP
- django-admin 和django-admin.py的區別Django
- web app和native app的區別WebAPP
- ng-app 和 ng-app=""的區別APP
- CROSS APPLY 和outer apply 的區別ROSAPP
- call,apply和bind的區別APP
- uniapp vue和nvue的區別APPVue
- getApplication和Activity.this的區別APP
- BeanFactory 和 ApplicationContext 的區別BeanAPPContext
- django版本區別Django
- app後端和web後端的區別APP後端Web
- apply 、call 以及 bind 的使用和區別APP
- append與 appendTo的區別APP
- Flask框架和Django框架有什麼區別?Flask框架Django
- kubectl 的 create 和 apply 有什麼區別APP
- ../和./和/的區別
- 和 的區別
- as 和 with的區別
- ||和??的區別
- /*和/**的區別
- WebApp與NativeApp的區別WebAPP
- A Data Migration for Every Django ProjectDjangoProject
- LinkedList和ArrayList的區別、Vector和ArrayList的區別
- http和https的區別/get和post的區別HTTP
- 開發APP和開發微信小程式的區別?APP微信小程式
- JS中改變this的指向 call、apply 和 bind 的區別JSAPP
- Android中Application和Activity的Context物件的區別AndroidAPPContext物件
- Pandas中apply、applymap、map的區別APP
- 列表中的append,extend,+=,+的區別APP
- ./ 和sh 的區別
- JQuery this和$(this)的區別jQuery
- jquery $(this) 和this的區別jQuery
- T和?的區別
- ++a和a++的區別
- makefile =和:=的區別
- cookie與session的區別以及在Django中的實現CookieSessionDjango