久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

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

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

一、這種布局的優點

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

二、Django 默認產生的布局

假設項目名為 foo, 使用 python django-admin.py startproject foo 命令產生的默認布局會是:

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

三、推薦的項目布局

假設我們的項目名為 myproject, 其中有兩個應用 blog 和 users,推薦的項目布局可以為:

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. 每個應用的目錄位置

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

myproject/blog/ 和 myproject/users/ 是項目的兩個應用所在的目錄,將 blog、 users 這兩個應用的目錄與 myproject/myproject/ 平行放置,而不放置在 myproject/myproject/ 目錄內的好處是: 之后要 import 應用中的模塊時,比如 import blog 應用中的 models 時,可以用 import blog.models,而不需要用 import myproject.blog.models,這樣也方便之后能將應用獨立出來重用。

2. 為每個環境設置各自的配置信息

針對項目的各個環境,如本地開發 dev、 內部測試 stage、 自動化流程環境 jenkins 及生產環境 prod,分別創建獨立的配置文件。

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

from base import *

這樣,這些環境配置文件就能讀取默認的配置項了,之后就能在各自的配置文件中設置定制的配置值了。比如本地開發環境,可以在 dev.py 中添加 DEBUG=True**, 而生產環境 **prod.py**,可以設置 DEBUG=False`。

指定使用哪個配置文件:

可以通過操作系統的環境變量指定,比如:

export DJANGO_SETTINGS_MODELS='myproject.settings.prod'

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

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

或者

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

3. 修改 INSTALLED_APPS

默認的 INSTALLED_APPS 會是:

INSTALLED_APPS = ( ...)

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

INSTALLED_APPS = [ ...]

進一步可以將 INSTALLED_APPS 中的第三方(內置)的應用與我們自己的應用分開,如:

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

這樣分開后,我們就可以只針對我們自己的應用進行 test 和 code coverage。

以上針對 INSTALLED_APPS 的修改也可以針對 TEMPLATE_DIRS 和 MIDDLEMARE_CLASSES 進行。

4. 調整 pip requirements

項目一般都有一個 requirements.txt 文件,可以指定項目的依賴包,根據這個文件,可以用以下命令對依賴包進行自動安裝:

pip install -r requirements.txt

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

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

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

5. 分割測試文件

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

6. URL 配置文件

先各個應用內的 urls.py 保存各自的 URL 配置,然后在項目的根 URL 配置文件中,通過 include 命令將子應用的 URL 配置信息包含進行:

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

7. 模板和靜態文件

各個子應用都應該有各自的模板和靜態文件目錄,如 blog 的模板和靜態文件目錄位置應該為: myproject/blog/templates/blog/ 和 myproject/blog/static/blog/ 。如果想對子應用中的模板和靜態文件進行覆蓋,可以通過在項目根模板和根靜態文件目錄中創建相同名字的文件進行。比如要覆蓋 blog 中的 detail.html 模板,可以通過創建 myproject/templates/blog/detail.html 文件來對默認的模板文件進行覆蓋。

8. 重用子應用

如果想在另一個項目中重用 blog 應用,正確的方法是:

將 blog 應用提取出來,創建一個獨立的代碼庫 在各個項目中,使用 pip install 的方式安裝 blog 應用 在各個項目中,使用 pip 對依賴的 blog 進行更新

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

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

標簽: Django
相關文章:
主站蜘蛛池模板: 一区二区三区成人 | 日韩精品一区二区三区在线播放 | 福利视频一 | 久久久久一 | 日韩综合在线 | 国产精品久久久久久久午夜片 | 中文字幕91视频 | 久久久久久影院 | 国产美女精品视频免费观看 | 国产精品一区二区三区四区 | 亚洲 欧美 精品 | 亚洲成人精品 | 黄色国产大片 | 国产欧美一区二区三区在线看 | 久久三级视频 | 一级黄色大片 | av在线毛片 | 亚洲精品一区二三区不卡 | 黄色电影在线免费观看 | 日韩欧美一区二区在线 | 国产在线网站 | 亚洲激情综合 | 亚洲精品乱码久久久久久花季 | 99热播在线 | 欧美日韩黄 | 古风h啪肉1v1摄政王 | 精品入口麻豆88视频 | 91精品久久久久久久久中文字幕 | 日韩久久成人 | 亚洲欧美中文日韩在线v日本 | 男人的天堂在线视频 | 国产一级黄色 | 精品在线一区二区 | 久久久久国产一级毛片高清版小说 | 日日干夜夜干 | 中文字幕亚洲欧美日韩在线不卡 | 国产精品99久久久久久久久久久久 | 国产精品一区二区三区在线 | 超碰av人人 | 国产福利91精品 | 在线播放亚洲 |