4 回答

TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊
一個(gè)project包含很多個(gè)Django app以及對它們的配置。
技術(shù)上,project的作用是提供配置文件,比方說哪里定義數(shù)據(jù)庫連接信息, 安裝的app列表, TEMPLATE_DIRS ,等等。
一個(gè)app是一套Django功能的集合,通常包括模型和視圖,按Python的包結(jié)構(gòu)的方式存在。
例如,Django本身內(nèi)建有一些app,例如注釋系統(tǒng)和自動(dòng)管理界面。 app的一個(gè)關(guān)鍵點(diǎn)是它們是很容易移植到其他project和被多個(gè)project復(fù)用。
創(chuàng)建一個(gè)APP
在 “PythonProject” 項(xiàng)目文件下輸入下面的命令來創(chuàng)建 “nowamagic” app:
1 python manage.py startapp nowamagic
這個(gè)命令并沒有輸出什么,它只在 PythonProject 的目錄里創(chuàng)建了一個(gè) nowamagic 目錄。 讓我們來看看這個(gè)目錄的內(nèi)容:
1 nowamagic/
2 __init__.py
3 models.py
4 tests.py
5 views.py
這個(gè)目錄包含了這個(gè)app的模型和視圖。
使用你最喜歡的文本編輯器查看一下 models.py 和 views.py 文件的內(nèi)容。 它們都是空的,除了 models.py 里有一個(gè) import。這就是你Django app的基礎(chǔ)。
對于如何架構(gòu)Django代碼并沒有快速成套的規(guī)則。 如果你只是建造一個(gè)簡單的Web站點(diǎn),那么可能你只需要一個(gè)app就可以了; 但如果是一個(gè)包含許多不相關(guān)的模塊的復(fù)雜的網(wǎng)站,例如電子商務(wù)和社區(qū)之類的站點(diǎn),那么你可能需要把這些模塊劃分成不同的app,以便以后復(fù)用。
不錯(cuò),你可以不用創(chuàng)建app,這一點(diǎn)應(yīng)經(jīng)被我們之前編寫的視圖函數(shù)的例子證明了 。 在那些例子中,我們只是簡單的創(chuàng)建了一個(gè)稱為views.py的文件,編寫了一些函數(shù)并在URLconf中設(shè)置了各個(gè)函數(shù)的映射。 這些情況都不需要使用apps。
但是,系統(tǒng)對app有一個(gè)約定: 如果你使用了Django的數(shù)據(jù)庫層(模型),你必須創(chuàng)建一個(gè)Django app。模型必須存放在apps中。因此,為了開始建造我們的模型,我們必須創(chuàng)建一個(gè)新的app。

TA貢獻(xiàn)1936條經(jīng)驗(yàn) 獲得超7個(gè)贊
12 | class order_list_model(models.Model): user = models.ForeignKey( "user_app.user_model" ) # 該訂單的用戶 |
123 | # 查詢一個(gè)用戶的所有訂單 order_list_model.objects. filter (user = query_user) |
- 4 回答
- 0 關(guān)注
- 712 瀏覽
添加回答
舉報(bào)