电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

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

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

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

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

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

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

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è)置各自的配置信息

針對(duì)項(xiàng)目的各個(gè)環(huán)境,如本地開發(fā) dev、 內(nèi)部測(cè)試 stage、 自動(dòng)化流程環(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 會(huì)是:

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

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

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

4. 調(diào)整 pip requirements

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

pip install -r requirements.txt

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

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

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

5. 分割測(cè)試文件

在每個(gè)應(yīng)用中分別創(chuàng)建一個(gè)包含測(cè)試內(nèi)容的目錄 tests,將對(duì)應(yīng)不同類別的測(cè)試分別保存在不同的文件中,如 test_models.py、 test_views.py 等。這樣分配,比起將全部測(cè)試代碼放在單個(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/ 。如果想對(duì)子應(yīng)用中的模板和靜態(tài)文件進(jìn)行覆蓋,可以通過在項(xiàng)目根模板和根靜態(tài)文件目錄中創(chuàng)建相同名字的文件進(jìn)行。比如要覆蓋 blog 中的 detail.html 模板,可以通過創(chuàng)建 myproject/templates/blog/detail.html 文件來對(duì)默認(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 對(duì)依賴的 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)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Django
相關(guān)文章:
主站蜘蛛池模板: 浴室柜-浴室镜厂家-YINAISI · 意大利设计师品牌 | 咿耐斯 |-浙江台州市丰源卫浴有限公司 | 气力输送设备_料封泵_仓泵_散装机_气化板_压力释放阀-河南锐驰机械设备有限公司 | 东莞爱加真空科技有限公司-进口真空镀膜机|真空镀膜设备|Polycold维修厂家 | CE认证_FCC认证_CCC认证_MFI认证_UN38.3认证-微测检测 CNAS实验室 | 碳刷_刷握_集电环_恒压簧_电刷厂家-上海丹臻机电科技有限公司 | 股指期货-期货开户-交易手续费佣金加1分-保证金低-期货公司排名靠前-万利信息开户 | 黄石东方妇产医院_黄石妇科医院哪家好_黄石无痛人流医院 | 热熔胶网膜|pes热熔网膜价格|eva热熔胶膜|热熔胶膜|tpu热熔胶膜厂家-苏州惠洋胶粘制品有限公司 | 外贮压-柜式-悬挂式-七氟丙烷-灭火器-灭火系统-药剂-价格-厂家-IG541-混合气体-贮压-非贮压-超细干粉-自动-灭火装置-气体灭火设备-探火管灭火厂家-东莞汇建消防科技有限公司 | 山东活动策划|济南活动公司|济南公关活动策划-济南锐嘉广告有限公司 | 三价铬_环保铬_环保电镀_东莞共盈新材料贸易有限公司 | 论文查重_免费论文查重_知网学术不端论文查重检测系统入口_论文查重软件 | 北京租车牌|京牌指标租赁|小客车指标出租 | 专业生物有机肥造粒机,粉状有机肥生产线,槽式翻堆机厂家-郑州华之强重工科技有限公司 | 合肥抖音SEO网站优化-网站建设-网络推广营销公司-百度爱采购-安徽企匠科技 | 有机肥设备生产制造厂家,BB掺混肥搅拌机、复合肥设备生产线,有机肥料全部加工设备多少钱,对辊挤压造粒机,有机肥造粒设备 -- 郑州程翔重工机械有限公司 | 线粒体膜电位荧光探针-细胞膜-标记二抗-上海复申生物科技有限公司 | nalgene洗瓶,nalgene量筒,nalgene窄口瓶,nalgene放水口大瓶,浙江省nalgene代理-杭州雷琪实验器材有限公司 | 泥浆在线密度计厂家-防爆数字压力表-膜盒-远传压力表厂家-江苏大亚自控设备有限公司 | 袋式过滤器,自清洗过滤器,保安过滤器,篮式过滤器,气体过滤器,全自动过滤器,反冲洗过滤器,管道过滤器,无锡驰业环保科技有限公司 | 安规_综合测试仪,电器安全性能综合测试仪,低压母线槽安规综合测试仪-青岛合众电子有限公司 | 黄石妇科医院_黄石东方女子医院_黄石东方妇产医院怎么样 | 大倾角皮带机-皮带输送机-螺旋输送机-矿用皮带输送机价格厂家-河南坤威机械 | 谈股票-今日股票行情走势分析-牛股推荐排行榜 | 六维力传感器_三维力传感器_二维力传感器-南京神源生智能科技有限公司 | 深圳激光打标机_激光打标机_激光焊接机_激光切割机_同体激光打标机-深圳市创想激光科技有限公司 深圳快餐店设计-餐饮设计公司-餐饮空间品牌全案设计-深圳市勤蜂装饰工程 | 北京开业庆典策划-年会活动策划公司-舞龙舞狮团大鼓表演-北京盛乾龙狮鼓乐礼仪庆典策划公司 | crm客户关系管理系统,销售管理系统,crm系统,在线crm,移动crm系统 - 爱客crm | 金现代信息产业股份有限公司--数字化解决方案供应商 | 杭州实验室尾气处理_实验台_实验室家具_杭州秋叶实验设备有限公司 | 新材料分散-高速均质搅拌机-超声波分散混合-上海化烁智能设备有限公司 | 微水泥_硅藻泥_艺术涂料_艺术漆_艺术漆加盟-青岛泥之韵环保壁材 武汉EPS线条_EPS装饰线条_EPS构件_湖北博欧EPS线条厂家 | 安平县鑫川金属丝网制品有限公司,防风抑尘网,单峰防风抑尘,不锈钢防风抑尘网,铝板防风抑尘网,镀铝锌防风抑尘网 | 巨野月嫂-家政公司-巨野县红墙安康母婴护理中心 | IHDW_TOSOKU_NEMICON_EHDW系列电子手轮,HC1系列电子手轮-上海莆林电子设备有限公司 | 飞象网 - 通信人每天必上的网站 全球化工设备网—化工设备,化工机械,制药设备,环保设备的专业网络市场。 | 不锈钢拉手厂家|浴室门拉手厂家|江门市蓬江区金志翔五金制品有限公司 | 数控车床-立式加工中心-多功能机床-小型车床-山东临沂金星机床有限公司 | 冷水机,风冷冷水机,水冷冷水机,螺杆冷水机专业制造商-上海祝松机械有限公司 | 平面钻,法兰钻,三维钻-山东兴田阳光智能装备股份有限公司 | 风电变桨伺服驱动器-风电偏航变桨系统-深圳众城卓越科技有限公司 |