国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

在Django中同時(shí)使用多個(gè)配置文件的方法

2020-02-23 01:40:35
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

我們僅僅處理一個(gè)單一的設(shè)置文件 settings.py文件由django-admin.py startproject命令生成。但是當(dāng)你準(zhǔn)備要進(jìn)行配置的時(shí)候,你將發(fā)現(xiàn)你需要多個(gè)配置文件以使你的開(kāi)發(fā)環(huán)境和產(chǎn)品環(huán)境相獨(dú)立。 比如,你可能不想每次在本地機(jī)器上測(cè)試代碼改變的時(shí)候?qū)EBUG從False 改為T(mén)rue。Django通過(guò)使用多個(gè)配置文件而使得這種情況很容易得到避免。

如果你想把你的配置文件按照產(chǎn)品設(shè)置和開(kāi)發(fā)設(shè)置組織起來(lái),你可以通過(guò)下面三種方法的其中一種達(dá)到這個(gè)目的。

    設(shè)置成兩個(gè)全面的,彼此獨(dú)立的配置文件     設(shè)置一個(gè)基本的配置文件(比如,為了開(kāi)發(fā))和第二個(gè)(為了產(chǎn)品)配置文件,第二個(gè)配置文件僅僅從基本的那個(gè)配置文件導(dǎo)入配置,并對(duì)需要定義的進(jìn)行復(fù)寫(xiě).     使用一個(gè)單獨(dú)的配置文件,此配置文件包含一個(gè)Python的邏輯判斷根據(jù)上下文環(huán)境改變?cè)O(shè)置。

我們將會(huì)在依次解釋這幾種方式

首先,最基本的方法是定義兩個(gè)單獨(dú)的配置文件。 如果你是跟隨之前的例子做下來(lái)的,那么你已經(jīng)有了一個(gè)settings.py了,現(xiàn)在你只需要將它復(fù)制一份并命名為settings_production.py(文件名可以按照你自己的喜好定義),在這個(gè)新文件中改變DEBUG等設(shè)置。

第二種方法比較類似,但是減少了許多冗余。 作為使用兩個(gè)內(nèi)容大部分相同的配置文件的替代方式,你可以使用一個(gè)文件為基本文件,另外一個(gè)文件從基本文件中導(dǎo)入相關(guān)設(shè)定。 例如

# settings.pyDEBUG = TrueTEMPLATE_DEBUG = DEBUGDATABASE_ENGINE = 'postgresql_psycopg2'DATABASE_NAME = 'devdb'DATABASE_USER = ''DATABASE_PASSWORD = ''DATABASE_PORT = ''# ...# settings_production.pyfrom settings import *DEBUG = TEMPLATE_DEBUG = FalseDATABASE_NAME = 'production'DATABASE_USER = 'app'DATABASE_PASSWORD = 'letmein'

此處,settings_production.py 從settings.py 導(dǎo)入所有的設(shè)定,僅僅只是重新定義了產(chǎn)品模式下需要特殊處理的設(shè)置。 在這個(gè)案例中,DEBUG 被設(shè)置為False,但是我們已經(jīng)對(duì)產(chǎn)品模式設(shè)置了不同的數(shù)據(jù)庫(kù)訪問(wèn)參數(shù)。 (后者將向你演示你可以重新定義 任何 設(shè)置,并不只是象 DEBUG 這樣的基本設(shè)置。)

最終,最精簡(jiǎn)的達(dá)到兩個(gè)配置環(huán)境設(shè)定的方案是使用一個(gè)配置文件,在此配置文件中根據(jù)不同的環(huán)境進(jìn)行設(shè)置。 一個(gè)達(dá)到這個(gè)目的的方法是檢查當(dāng)前的主機(jī)名。 例如:

# settings.pyimport socketif socket.gethostname() == 'my-laptop':  DEBUG = TEMPLATE_DEBUG = Trueelse:  DEBUG = TEMPLATE_DEBUG = False# ...

在這里,我們從python標(biāo)準(zhǔn)庫(kù)導(dǎo)入了socket 模塊,使用它來(lái)檢查當(dāng)前系統(tǒng)的主機(jī)名。 我們可以通過(guò)檢查主機(jī)名來(lái)確認(rèn)代碼是否運(yùn)行在產(chǎn)品服務(wù)器上。

一個(gè)關(guān)鍵是配置文件僅僅是包含python代碼的文件。你可以從其他文件導(dǎo)入這些python代碼,可以通過(guò)這些代碼執(zhí)行任意的邏輯判斷等操作。 如果你打算按照這種方案走下去,請(qǐng)確定這些配置文件中的代碼是足夠安全(防彈)的。 如果這個(gè)配置文件拋出任何的異常,Django都有可能會(huì)發(fā)生很嚴(yán)重的崩潰。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 龙游县| 绍兴县| 德庆县| 高尔夫| 子长县| 湖南省| 平南县| 垣曲县| 凌海市| 长子县| 平遥县| 秀山| 五台县| 松原市| 嘉义县| 泽普县| 清流县| 双柏县| 太康县| 沁水县| 浙江省| 吉首市| 高尔夫| 新晃| 和平区| 涿鹿县| 遂昌县| 封开县| 宁德市| 汾阳市| 广平县| 阿克苏市| 常山县| 大宁县| 康马县| 新化县| 道孚县| 特克斯县| 巴南区| 松江区| 宣汉县|