Python的Django架構中settings檔案的部署建議

來源:互聯網
上載者:User
django在一個項目的目錄結構劃分方面缺乏必要的規範,因此不同人的項目組織形式也千奇百怪,而且也很難說誰的做法就比較好。我根據自己的項目組織習慣,發布了一個項目dj-scaffold。

前些天在reddit上為我的項目dj-scaffold打了個“廣告”(見:http://redd.it/kw5d4)。不想評價甚糟,甚至差點被打成負分。其中更也人將這個項目說的一文不值。面對負面聲音雖然會有些不爽,但其中的建設性意見還是需要聽取的,至於那些純屬個人偏好部分就自動過濾了。

在談及settings檔案如何組織時,coderanger建議參考The Best (and Worst) of Django中的做法。文中的主要觀點是開發環境和生產環境的配置都需要放到VCS中進資料列版本設定。參考文中的做法,我對settings模組做了部分調整。註:代碼 https://github.com/vicalloy/dj-scaffold/tree/master/dj_scaffold/conf/prj/sites/settings
local_settings的弊病

為將項目的預設配置和本地配置區分開,最常用的做法是增加一個local_settings.py檔案,並在settings檔案的最後對該檔案進行import。

try: from local_settings import *except: pass 

由此引發的問題是你不能對local_settings.py進資料列版本設定,部署環境的配置萬一丟失將難以找回。
解決方案

針對該問題,建議的解決方案如下
合理的設定檔群組織方式

複製代碼 代碼如下:

|~settings/
| |-__init__.py
| |-base.py #預設配置資訊
| |-dev.py #開發環境的配置
| |-local.sample #本地的擴充配置在dev和production的最後進行import
| |-pre.sample #設定當前使用的配置為生產環境還是開發環境
| `-production.py #生產環境的配置

使用方式

DJANGO_SETTINGS_MODULE 

django的admin指令碼提供了settings參數用於指定當前使用的設定檔

django-admin.py shell --settings=settings.dev 

在wsgi指令碼中則可直接設定需要使用的settings

deploy.wsgios.environ['DJANGO_SETTINGS_MODULE'] = settings.production 

簡化參數

當然,如果每次使用django-admin.py的時候都要帶上settings參數還是非常惱人,所以推薦的做法是在pre.py中配置自己所需要使用的設定檔。

SETTINGS = 'production' #dev 
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.