Python的Django框架中settings文件的部署建議
django在一個項目的目錄結構劃分方面缺乏必要的規(guī)范,因此不同人的項目組織形式也千奇百怪,而且也很難說誰的做法就比較好。我根據自己的項目組織習慣,發(fā)布了一個項目dj-scaffold。
前些天在reddit上為我的項目dj-scaffold打了個“廣告”(見:http://redd.it/kw5d4)。不想評價甚糟,甚至差點被打成負分。其中更也人將這個項目說的一文不值。面對負面聲音雖然會有些不爽,但其中的建設性意見還是需要聽取的,至于那些純屬個人偏好部分就自動過濾了。
在談及settings文件如何組織時,coderanger建議參考The Best (and Worst) of Django中的做法。文中的主要觀點是開發(fā)環(huán)境和生產環(huán)境的配置都需要放到VCS中進行版本控制。參考文中的做法,我對settings模塊做了部分調整。注:代碼 https://github.com/vicalloy/dj-scaffold/tree/master/dj_scaffold/conf/prj/sites/settings
local_settings的弊病
為將項目的默認配置和本地配置區(qū)分開,最常用的做法是增加一個local_settings.py文件,并在settings文件的最后對該文件進行import。
try: from local_settings import * except: pass
由此引發(fā)的問題是你不能對local_settings.py進行版本控制,部署環(huán)境的配置萬一丟失將難以找回。
解決方案
針對該問題,建議的解決方案如下
合理的配置文件組織方式
| |-__init__.py
| |-base.py #默認配置信息
| |-dev.py #開發(fā)環(huán)境的配置
| |-local.sample #本地的擴展配置在dev和production的最后進行import
| |-pre.sample #設置當前使用的配置為生產環(huán)境還是開發(fā)環(huán)境
| `-production.py #生產環(huán)境的配置
使用方式
<strong>DJANGO_SETTINGS_MODULE</strong>
django的admin腳本提供了settings參數用于指定當前使用的配置文件
django-admin.py shell --settings=settings.dev
在wsgi腳本中則可直接設置需要使用的settings
deploy.wsgi os.environ['DJANGO_SETTINGS_MODULE'] = settings.production
簡化參數
當然,如果每次使用django-admin.py的時候都要帶上settings參數還是非常惱人,所以推薦的做法是在pre.py中配置自己所需要使用的配置文件。
SETTINGS = 'production' #dev
相關文章
Python聊天室?guī)Ы缑鎸崿F的示例代碼(tkinter,Mysql,Treading,socket)
這篇文章主要介紹了Python聊天室?guī)Ы缑鎸崿F的示例代碼(tkinter,Mysql,Treading,socket),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04
Python3實現爬蟲爬取趕集網列表功能【基于request和BeautifulSoup模塊】
這篇文章主要介紹了Python3實現爬蟲爬取趕集網列表功能,結合實例形式分析了Python3基于request和BeautifulSoup模塊的網站頁面爬取相關操作技巧,需要的朋友可以參考下2018-12-12
Python利用SMTP發(fā)送郵件的常見問題與解決方案詳解
在自動化辦公和系統(tǒng)開發(fā)中,郵件發(fā)送功能是常見的需求,本文將從實際案例出發(fā),分析常見的SMTP錯誤,并提供完整的解決方案,希望對大家有一定的幫助2025-04-04
Python深度學習實戰(zhàn)PyQt5信號與槽的連接
本文講解信號與槽的連接機制,詳細示范各種類型的信號/槽連接的實現方法,這是圖形用戶界面的核心內容。還將介紹面向對象的程序設計,這是圖形用戶界面的基本思想2021-10-10

