日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Django 項(xiàng)目布局方法(值得推薦)

瀏覽:25日期:2024-10-19 14:58:16

一、這種布局的優(yōu)點(diǎn)

項(xiàng)目中的每個(gè)應(yīng)用都相對獨(dú)立,方便以后拿出來重用。 這樣的布局會促使你在開發(fā)過程中考慮每個(gè)應(yīng)用的重用性。 開發(fā)、測試、生產(chǎn)等不同的環(huán)境都有各自獨(dú)立的配置文件,方便配置項(xiàng)的共享和定制。 不同的環(huán)境都有各自獨(dú)立的 pip requirements 文件。 每個(gè)應(yīng)用都有各自的 templates 和 static 目錄,你可以通過項(xiàng)目級的 templates 和 static 目錄中的文件對各應(yīng)用中的相應(yīng)內(nèi)容進(jìn)行覆蓋。 對 models、views、managers 等的測試都各自保存在獨(dú)立的文件中,易于閱讀和理解。

二、Django 默認(rèn)產(chǎn)生的布局

假設(shè)項(xiàng)目名為 foo, 使用 python django-admin.py startproject foo 命令產(chǎn)生的默認(rèn)布局會是:

foo/ manage.py foo/ __init__.py settings.py urls.py wsgi.py

三、推薦的項(xiàng)目布局

假設(shè)我們的項(xiàng)目名為 myproject, 其中有兩個(gè)應(yīng)用 blog 和 users,推薦的項(xiàng)目布局可以為:

myproject/ manage.py myproject/ __init__.py urls.py wsgi.py settings/ __init__.py base.py dev.py prod.py blog/ __init__.py models.py managers.py views.py urls.py templates/ blog/base.htmllist.htmldetail.html static/ css/ js/ … tests/ __init__.py test_models.py test_managers.py test_views.py users/ __init__.py models.py views.py urls.py templates/ users/base.htmllist.htmldetail.html static/ css/ js/ … tests/ __init__.py test_models.py test_views.py static/ css/ js/ … templates/ base.html index.html requirements/ base.txt dev.txt test.txt prod.txt

1. 每個(gè)應(yīng)用的目錄位置

最頂層的 myproject 目錄包含有 manage.py 文件,因此是項(xiàng)目的根目錄。 myproject/myproject/ 是項(xiàng)目的內(nèi)容目錄,項(xiàng)目的根 URL 配置文件, WSGI 配置文件都存放在這里面。

myproject/blog/ 和 myproject/users/ 是項(xiàng)目的兩個(gè)應(yīng)用所在的目錄,將 blog、 users 這兩個(gè)應(yīng)用的目錄與 myproject/myproject/ 平行放置,而不放置在 myproject/myproject/ 目錄內(nèi)的好處是: 之后要 import 應(yīng)用中的模塊時(shí),比如 import blog 應(yīng)用中的 models 時(shí),可以用 import blog.models,而不需要用 import myproject.blog.models,這樣也方便之后能將應(yīng)用獨(dú)立出來重用。

2. 為每個(gè)環(huán)境設(shè)置各自的配置信息

針對項(xiàng)目的各個(gè)環(huán)境,如本地開發(fā) dev、 內(nèi)部測試 stage、 自動化流程環(huán)境 jenkins 及生產(chǎn)環(huán)境 prod,分別創(chuàng)建獨(dú)立的配置文件。

在 myproject/myproject 目錄下新建一個(gè) settings 目錄并在里面創(chuàng)建一個(gè)空的 __init__.py。 將 myproject/myproject/settings.py 文件搬到 myproject/myproject/settings/ 目錄下,并改名為 base.py,這個(gè)文件里面的配置信息被所有其它環(huán)境的配置文件所共享。 在 myproject/myproject/settings/ 目錄下分別創(chuàng)建 dev.py、stage.py、jenkins.py 和 prod.py 4 個(gè)文件,每個(gè)文件中包含如下的一行代碼:

from base import *

這樣,這些環(huán)境配置文件就能讀取默認(rèn)的配置項(xiàng)了,之后就能在各自的配置文件中設(shè)置定制的配置值了。比如本地開發(fā)環(huán)境,可以在 dev.py 中添加 DEBUG=True**, 而生產(chǎn)環(huán)境 **prod.py**,可以設(shè)置 DEBUG=False`。

指定使用哪個(gè)配置文件:

可以通過操作系統(tǒng)的環(huán)境變量指定,比如:

export DJANGO_SETTINGS_MODELS='myproject.settings.prod'

也可以通過命令行參數(shù)指定, 比如:

./manage.py migrate --settings=myproject.settings.prod

或者

gunicorn -w 4 -b 127.0.0.1:8001 --settings=myproject.settings.prod

3. 修改 INSTALLED_APPS

默認(rèn)的 INSTALLED_APPS 會是:

INSTALLED_APPS = ( ...)

可以將元組 () 改為列表 []:

INSTALLED_APPS = [ ...]

進(jìn)一步可以將 INSTALLED_APPS 中的第三方(內(nèi)置)的應(yīng)用與我們自己的應(yīng)用分開,如:

PREREQ_APPS = [ ‘django.contrib.auth’, ‘django.contrib.contenttypes’, … ‘debug_toolbar’, ‘imagekit’, ‘haystack’,]PROJECT_APPS = [ ‘homepage’, ‘users’, ‘blog’,]INSTALLED_APPS = PREREQ_APPS + PROJECT_APPS

這樣分開后,我們就可以只針對我們自己的應(yīng)用進(jìn)行 test 和 code coverage。

以上針對 INSTALLED_APPS 的修改也可以針對 TEMPLATE_DIRS 和 MIDDLEMARE_CLASSES 進(jìn)行。

4. 調(diào)整 pip requirements

項(xiàng)目一般都有一個(gè) requirements.txt 文件,可以指定項(xiàng)目的依賴包,根據(jù)這個(gè)文件,可以用以下命令對依賴包進(jìn)行自動安裝:

pip install -r requirements.txt

在 requirements.txt 文件中可以用 -r filename 來包含進(jìn)另一個(gè)文件的內(nèi)容,這個(gè)功能和 C 語言中的 #include <filename.h> 類似。

因此,我們可以將通用的依賴信息保存在 myproject/requirements/base.txt 文件中,而針對不同的環(huán)境,比如測試環(huán)境,保存在另一個(gè)文件中,如 myproject/requirements/test.txt, 里面的內(nèi)容可能會是:

-r base.txtpytest==2.5.2coverage==3.7.1

5. 分割測試文件

在每個(gè)應(yīng)用中分別創(chuàng)建一個(gè)包含測試內(nèi)容的目錄 tests,將對應(yīng)不同類別的測試分別保存在不同的文件中,如 test_models.py、 test_views.py 等。這樣分配,比起將全部測試代碼放在單個(gè)文件中的好處是:代碼更易閱讀,同時(shí)還能減少在編輯器中上下翻滾的時(shí)間。

6. URL 配置文件

先各個(gè)應(yīng)用內(nèi)的 urls.py 保存各自的 URL 配置,然后在項(xiàng)目的根 URL 配置文件中,通過 include 命令將子應(yīng)用的 URL 配置信息包含進(jìn)行:

urlpatterns = patterns(‘’, url(r’^$’, HomePageView.as_view(), name=‘home’), url(r’^blog/‘, include(‘blog.urls’)), url(r’^user/‘, include(‘users.urls’)),)

7. 模板和靜態(tài)文件

各個(gè)子應(yīng)用都應(yīng)該有各自的模板和靜態(tài)文件目錄,如 blog 的模板和靜態(tài)文件目錄位置應(yīng)該為: myproject/blog/templates/blog/ 和 myproject/blog/static/blog/ 。如果想對子應(yīng)用中的模板和靜態(tài)文件進(jìn)行覆蓋,可以通過在項(xiàng)目根模板和根靜態(tài)文件目錄中創(chuàng)建相同名字的文件進(jìn)行。比如要覆蓋 blog 中的 detail.html 模板,可以通過創(chuàng)建 myproject/templates/blog/detail.html 文件來對默認(rèn)的模板文件進(jìn)行覆蓋。

8. 重用子應(yīng)用

如果想在另一個(gè)項(xiàng)目中重用 blog 應(yīng)用,正確的方法是:

將 blog 應(yīng)用提取出來,創(chuàng)建一個(gè)獨(dú)立的代碼庫 在各個(gè)項(xiàng)目中,使用 pip install 的方式安裝 blog 應(yīng)用 在各個(gè)項(xiàng)目中,使用 pip 對依賴的 blog 進(jìn)行更新

參考文獻(xiàn): http://www.revsys.com/blog/2014/nov/21/recommended-django-project-layout/

到此這篇關(guān)于Django 項(xiàng)目布局方法(值得推薦)的文章就介紹到這了,更多相關(guān)Django 項(xiàng)目布局方法(值得推薦)內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Django
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
免费高清在线一区| 久久99精品久久久野外观看| 国产精品sss在线观看av| 久久精品导航| 国产日韩亚洲| 蜜臀av性久久久久蜜臀aⅴ流畅| 日本aⅴ精品一区二区三区| 中文字幕亚洲精品乱码| 国产免费av国片精品草莓男男| 免费欧美一区| 日本少妇一区| 欧美日韩一区二区国产| 午夜电影亚洲| 精品国产a一区二区三区v免费| 黄色在线一区| 久久国产精品免费一区二区三区| 久久久久久久欧美精品| 国产成人精品三级高清久久91| 精品久久久久久久| www.51av欧美视频| 日韩精品欧美精品| 欧美成人午夜| 亚洲免费成人av在线| 久久国内精品视频| 国产精选在线| 日韩中文字幕亚洲一区二区va在线| 一区二区三区四区在线观看国产日韩| 日本a级不卡| 国产超碰精品| 日韩av三区| 国产精品免费精品自在线观看| 91亚洲国产高清| 蜜臀av一区二区三区| 国产一区二区三区不卡视频网站 | 国产极品久久久久久久久波多结野| 麻豆免费精品视频| 91成人精品| 麻豆视频一区二区| 中文在线不卡| 国产一区二区亚洲| 一区二区三区网站| 丝袜美腿诱惑一区二区三区| 五月国产精品| 91九色精品| 97精品国产福利一区二区三区| 一区二区高清| 午夜精品一区二区三区国产| 精品91福利视频| 日本精品在线播放| 久久精品欧美一区| 国产精品sss在线观看av| 老色鬼久久亚洲一区二区| 日韩精品首页| 国产一区二区三区不卡av| 久久国内精品自在自线400部| 国产免费成人| 午夜精品网站| 91精品一区国产高清在线gif| 精品视频黄色| 国产精品一区二区av日韩在线| 91高清一区| 亚洲欧美日韩高清在线| 婷婷激情一区| 国语对白精品一区二区| 一区二区91| 久久国产高清| 国产精品毛片在线看| 亚洲黄色在线| 欧美精品一线| 一区在线免费观看| 美女少妇全过程你懂的久久| 69精品国产久热在线观看| 亚洲综合国产| 麻豆精品网站| 日韩精品久久久久久| 蜜桃视频在线观看一区二区| 中国女人久久久| 日韩制服丝袜av| 91精品麻豆| 国产精品男女| 91欧美国产| 欧美精选一区二区三区| 日韩一区二区三免费高清在线观看| 亚洲天堂日韩在线| 国产精品极品| 国产 日韩 欧美一区| 亚洲在线免费| 国产精品视频一区二区三区综合 | 久久久久久色| 欧美黑人做爰爽爽爽| 国产日韩视频| 免费不卡中文字幕在线| 日韩精品福利一区二区三区| 精品视频一区二区三区在线观看 | 久久亚洲影院| 六月丁香综合在线视频| 欧美日韩激情| 天堂久久一区| 国产精久久久| 久久国产精品毛片| 风间由美中文字幕在线看视频国产欧美| 在线日韩视频| 日韩一区二区三区精品| 中文精品电影| 男女激情视频一区| 久久午夜精品| 国产成人免费| 日韩av网站免费在线| 99xxxx成人网| 精品视频在线观看网站| 最新国产精品久久久| 久久中文字幕av| 韩国一区二区三区视频| 激情欧美一区| 精品久久免费| 日本h片久久| 日韩中文字幕91| 欧美日中文字幕| 日韩激情一区| 国产suv精品一区二区四区视频 | 精品捆绑调教一区二区三区| 国产国产精品| 国产精品亚洲综合久久| 另类av一区二区| www.九色在线| 久久在线91| 国产亚洲欧美日韩精品一区二区三区 | 欧美一区二区三区高清视频 | 久久国产小视频| 国产66精品| 国产成人久久| 黄色欧美在线| 国产不卡精品| 五月激情久久| 久久中文字幕二区| 99精品综合| 午夜在线一区二区| 免费视频久久| 夜夜嗨一区二区| 亚洲欧美视频一区二区三区| 夜夜嗨网站十八久久| 久久午夜精品一区二区| 亚洲a成人v| 国产日本亚洲| 国产精品一级在线观看| 精品国产网站| 在线日韩av| 亚洲精品一级| 国产日韩欧美中文在线| 麻豆精品新av中文字幕| 国产成人免费精品| 日韩在线视频精品| 香蕉精品视频在线观看| 欧美一级精品| 99精品99| 日韩av不卡一区二区| 国产va免费精品观看精品视频| 少妇精品导航| 首页亚洲欧美制服丝腿| 国产亚洲久久| 日韩亚洲一区在线| 欧美网站在线| 欧美精品成人| 亚洲在线网站| 成人在线免费观看91| 国产亚洲一区在线| 精品国产不卡| 免费在线成人网| 成人污污视频| 四虎精品一区二区免费| 精品一区二区三区视频在线播放| 欧美香蕉视频| 欧美日韩亚洲一区二区三区在线| 国产精品字幕| 免费看日韩精品| 日韩欧美三区| 中文在线资源| 日韩精品一区二区三区中文| 色乱码一区二区三区网站| 亚洲一级在线| 蜜桃视频在线网站| 国产欧美成人| 亚洲激情偷拍| 日韩深夜视频| 日韩午夜免费| 久久久久久色| 国产精品色网| 99久久亚洲精品| 久久超级碰碰| 日韩黄色av| 欧美日韩四区| 色吊丝一区二区| 成人精品国产亚洲| 秋霞国产精品| 日韩精品永久网址| 日韩视频一区| 色综合www| 精品精品国产三级a∨在线| 日韩美女国产精品| 九色porny丨国产首页在线|