Django Cheat Sheet

摘录自《Two Scopes of Django》一书。

Settings的最佳实践

三个比较high-level的原则是:

  • 所有的settings都应该被VCS管理
  • settings应该有继承关系,而非在不同项目或文件之间的C/V
  • 隐私数据(如secret_key,密码等数据)不应该被VCS管理

settings之间的继承

要用settings目录取代settings.py单文件,该目录下包含:

  • base.py: 所有settings都继承自这个配置
  • dev.py 或 local.py: 本地开发环境的设置
  • test.py: 测试用的设置
  • staging.py: 演示用的设置
  • production.py: 正式上线的产品端的设置

隐私数据的保存

因此数据有两种保存方式,第一种是用环境变量保存,第二种是用json,xml,config等方式保存在文件中(该文件不可放入VCS)。

使用环境变量保存隐私数据

有多种方式:

  1. 放入bashrc等环境中;
  2. 如果使用virtualenv,可以放入venv/bin/activate文件中;

若在某个环境中没有对所需的环境变量进行设置,应该给予适当的错误提醒,具体做法为定义一个函数去取代直接从环境变量中取出数据(sec_xxx = os.environ['xxx']

1
2
3
4
5
6
def get_env_virable(var_name):
try:
return os.environ['xxx']
except KeyError:
error_msg = "Set the {} environment variable".format(var_name)
raise ImproperlyConfigured(error_msg)

requirements的最佳实践

在前文中提到过,settings采用继承关系而设置了不同的配置(dev,test,production等),根据不同的情形,应该也有不同的requirements文件。

最佳实践是讲requirements.txt单文件拆成requirements目录,在该目录下放置诸如:

  • base.txt
  • dev.txt 或 local.txt
  • staging.txt
  • production.txt

其中,base.txt是基础配置,其他的首行添加一句-r base.txt

0%