Python的Django框架中settings文件的部署建議
django在一個(gè)項(xiàng)目的目錄結(jié)構(gòu)劃分方面缺乏必要的規(guī)范,因此不同人的項(xiàng)目組織形式也千奇百怪,而且也很難說誰的做法就比較好。我根據(jù)自己的項(xiàng)目組織習(xí)慣,發(fā)布了一個(gè)項(xiàng)目dj-scaffold。
前些天在reddit上為我的項(xiàng)目dj-scaffold打了個(gè)“廣告”(見:http://redd.it/kw5d4)。不想評價(jià)甚糟,甚至差點(diǎn)被打成負(fù)分。其中更也人將這個(gè)項(xiàng)目說的一文不值。面對負(fù)面聲音雖然會有些不爽,但其中的建設(shè)性意見還是需要聽取的,至于那些純屬個(gè)人偏好部分就自動(dòng)過濾了。
在談及settings文件如何組織時(shí),coderanger建議參考The Best (and Worst) of Django中的做法。文中的主要觀點(diǎn)是開發(fā)環(huán)境和生產(chǎn)環(huán)境的配置都需要放到VCS中進(jìn)行版本控制。參考文中的做法,我對settings模塊做了部分調(diào)整。注:代碼 https://github.com/vicalloy/dj-scaffold/tree/master/dj_scaffold/conf/prj/sites/settings
local_settings的弊病
為將項(xiàng)目的默認(rèn)配置和本地配置區(qū)分開,最常用的做法是增加一個(gè)local_settings.py文件,并在settings文件的最后對該文件進(jìn)行import。
try: from local_settings import * except: pass
由此引發(fā)的問題是你不能對local_settings.py進(jìn)行版本控制,部署環(huán)境的配置萬一丟失將難以找回。
解決方案
針對該問題,建議的解決方案如下
合理的配置文件組織方式
| |-__init__.py
| |-base.py #默認(rèn)配置信息
| |-dev.py #開發(fā)環(huán)境的配置
| |-local.sample #本地的擴(kuò)展配置在dev和production的最后進(jìn)行import
| |-pre.sample #設(shè)置當(dāng)前使用的配置為生產(chǎn)環(huán)境還是開發(fā)環(huán)境
| `-production.py #生產(chǎn)環(huán)境的配置
使用方式
<strong>DJANGO_SETTINGS_MODULE</strong>
django的admin腳本提供了settings參數(shù)用于指定當(dāng)前使用的配置文件
django-admin.py shell --settings=settings.dev
在wsgi腳本中則可直接設(shè)置需要使用的settings
deploy.wsgi os.environ['DJANGO_SETTINGS_MODULE'] = settings.production
簡化參數(shù)
當(dāng)然,如果每次使用django-admin.py的時(shí)候都要帶上settings參數(shù)還是非常惱人,所以推薦的做法是在pre.py中配置自己所需要使用的配置文件。
SETTINGS = 'production' #dev
- django框架模型層功能、組成與用法分析
- 利用Django模版生成樹狀結(jié)構(gòu)實(shí)例代碼
- django模板結(jié)構(gòu)優(yōu)化的方法
- Django工程的分層結(jié)構(gòu)詳解
- Django-Model數(shù)據(jù)庫操作(增刪改查、連表結(jié)構(gòu))詳解
- Django框架視圖層URL映射與反向解析實(shí)例分析
- Django框架視圖函數(shù)設(shè)計(jì)示例
- 使用PyCharm配合部署Python的Django框架的配置紀(jì)實(shí)
- Python的Django框架中設(shè)置日期和字段可選的方法
- 分析Python的Django框架的運(yùn)行方式及處理流程
- Linux下將Python的Django項(xiàng)目部署到Apache服務(wù)器
- Django框架組成結(jié)構(gòu)、基本概念與文件功能分析
相關(guān)文章
10行Python代碼計(jì)算汽車數(shù)量的實(shí)現(xiàn)方法
這篇文章主要介紹了10行Python代碼計(jì)算汽車數(shù)量的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10Python?pygame派生精靈和精靈組創(chuàng)建敵機(jī)
這篇文章主要為大家介紹了Python?pygame派生精靈和精靈組創(chuàng)建敵機(jī)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08Python?實(shí)現(xiàn)一個(gè)全連接的神經(jīng)網(wǎng)絡(luò)
這篇文章主要介紹了Python?實(shí)現(xiàn)一個(gè)全連接的神經(jīng)網(wǎng)絡(luò),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-06-06Python使用Matplotlib實(shí)現(xiàn)創(chuàng)建動(dòng)態(tài)圖形
動(dòng)態(tài)圖形是使可視化更具吸引力和用戶吸引力的好方法,它幫助我們以有意義的方式展示數(shù)據(jù)可視化,本文將利用Matplotlib實(shí)現(xiàn)繪制一些常用動(dòng)態(tài)圖形,希望對大家有所幫助2024-02-02用pytorch的nn.Module構(gòu)造簡單全鏈接層實(shí)例
今天小編就為大家分享一篇用pytorch的nn.Module構(gòu)造簡單全鏈接層實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01LyScript實(shí)現(xiàn)內(nèi)存交換與差異對比的方法詳解
LyScript?針對內(nèi)存讀寫函數(shù)的封裝功能并不多,只提供了內(nèi)存讀取和內(nèi)存寫入函數(shù)的封裝,本篇文章將繼續(xù)對API進(jìn)行封裝,實(shí)現(xiàn)一些在軟件逆向分析中非常實(shí)用的功能,需要的可以參考一下2022-08-08Python的線程使用隊(duì)列Queue來改造轉(zhuǎn)賬場景
前篇我們了隊(duì)列Queue和轉(zhuǎn)賬場景這次趁熱學(xué)委展示一下使用隊(duì)列解決轉(zhuǎn)賬場景的問題,這篇文章主要介紹了Python的線程使用隊(duì)列來改造轉(zhuǎn)賬場景,需要的朋友可以參考一下2022-02-02flask?route對協(xié)議作用及設(shè)計(jì)思路
這篇文章主要為大家介紹了flask?route對協(xié)議作用及設(shè)計(jì)思路詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07Python/R語言分別實(shí)現(xiàn)斐波那契數(shù)列的示例詳解
這篇文章將通過兩個(gè)小問題:年齡計(jì)算、斐波那契數(shù)列,帶領(lǐng)大家深入淺出的理解兩種語言的基本語法,并用以實(shí)際場景,需要的可以參考一下2022-03-03