Web应用程序依赖多个参数才能在不同的环境中正常运行。仅举Django应用设置为例:数据库url,密码,秘密密钥,调试状态,电子邮件主机,允许的主机。这些参数大多数是特定于环境的。在开发环境中,您可能需要在调试模式下运行应用程序。另外,将密钥保存在安全的地方(而不是在git存储库中)也是一个聪明的主意。
Python Decouple是一个很棒的库,可以帮助您严格地将设置参数与源代码分开。这个想法很简单:与项目相关的参数直接进入源代码。与项目实例相关的参数进入环境文件。
以下是如何使用Python Decouple库的快速入门。
安装
如果愿意,也可以从PyPI下载。
用法
让我们考虑以下settings.py
文件,以说明如何使用该库。
首先.env
在项目的根目录中创建一个名为的文件。如果.ini
文件.env
不适合您的用例,您也可以使用文件。请参阅文档以获取更多说明。
如果您使用的是Git,请更新.gitignore
添加的.env
文件,以免将任何敏感数据提交到远程存储库。
现在导入库:
检索设置参数:
投射数据
注意投说法。Django期望DEBUG
是布尔值。以类似的方式,它期望EMAIL_PORT
是整数。
实际上,cast参数可以接收任何callable,这会将字符串值转换为其他值。对于ALLOWED_HOSTS
,Django需要一个主机名列表。
在.env
文件中,您可以这样输入:
然后,您settings.py
可以通过以下方式检索它:
看起来很复杂,对吧?实际上,该库附带了一个Csv帮助器,因此您无需编写所有这些代码。更好的方法是:
默认值
您可以在config
函数中添加一个额外的参数,以定义默认值,以防文件中存在未定义的值.env
。
例如,这意味着您无需在开发环境DEBUG
中的.env
文件中定义参数。
覆盖配置文件
如果您要临时更改某些设置参数,可以使用环境变量覆盖它:
如果您使用Django进行开发,则必须具备Python Decouple。我个人在所有Django项目中都使用它。确保您的应用程序凭证(如API密钥,Amazon S3,电子邮件参数,数据库参数)的安全非常重要,尤其是在开放源代码存储库中。也没有更多的development_settings.py
和production_settings.py
,仅使用一个settings.py
为你的整个项目。