我希望有一个通用配置,其设置不会在不同的环境(开发和生产)中改变。我知道我可以设置一个全局 settings.py 文件(例如,sql 限制),但据我所知,金字塔需要在启动时在 ini 文件中找到某些设置(例如,模板目录路径)。
我可以,如果可以,我将如何在金字塔中做到这一点?
我希望有一个通用配置,其设置不会在不同的环境(开发和生产)中改变。我知道我可以设置一个全局 settings.py 文件(例如,sql 限制),但据我所知,金字塔需要在启动时在 ini 文件中找到某些设置(例如,模板目录路径)。
我可以,如果可以,我将如何在金字塔中做到这一点?
在不超出 PasteDeploy 的 INI 范围的情况下,有几个可能的选项。但是,首先要意识到 INI 文件模型的美妙之处在于它具有创建具有不同设置/配置的多个文件的基本能力。是的,您必须使它们保持同步,但它们只是设置(没有逻辑),因此不应该是不可克服的。
无论如何,PasteDeploy支持由部分继承的默认[app:XXX]
部分。所以你可以在那里放置通用设置,并有不同的[app:myapp-dev]
和[app:myapp-prod]
部分。
# settings.ini
[DEFAULT]
foo = bar
[app:myapp-dev]
use = egg:myapp
[app:myapp-prod]
use = egg:myapp
set foo = baz
这可以通过
env/bin/pserve -n myapp-dev settings.ini
另一种选择是使用多个配置文件。
# myapp.ini
[app:myapp-section]
use = egg:myapp
foo = bar
# myapp-dev.ini
[app:main]
use = config:myapp.ini#myapp-section
foo = baz
# myapp-prod.ini
[app:main]
use = config:myapp.ini#myapp-section
这可以通过
env/bin/pserve myapp-prod.ini
如果您不想使用 PasteDeploy(ini 文件),您可以在 Python 中做一些事情,但这种配置简单有真正的好处。