15

金字塔项目中有一个 development.ini 或 production.ini。我在 ini 文件中添加自己的配置数据,例如:

[thrift]
host = 0.0.0.0
port = 8080

我想在项目的一个 py 文件中使用配置数据。如何在没有请求对象的情况下获取数据?(我见过一个使用请求的解决方案。)

4

3 回答 3

26

您可以在request.registry.settings或访问设置pyramid.threadlocal.get_current_registry().settings。它的行为就像字典。

如果您想使用第二个,即在没有请求的情况下获取设置,我必须警告您。根据文档

这个函数应该非常谨慎地使用,通常只在单元测试代码中使用。在测试上下文之外使用 get_current_registry 几乎总是一个错误,因为它的使用使得编写既不容易测试也不能编写脚本的代码成为可能。

任何需要访问设置的代码部分都是 Web 应用程序的一部分,并且应该访问请求,而不是一些神奇的全局访问。你可能认为你有充分的理由,但可能有更好的方法。如果您想讨论这个问题(如果它很复杂,可能会在另一个问题中讨论,因为一些代码会有所帮助),我很乐意帮助您找到一种干净的方法来做到这一点。

于 2012-06-05T10:28:39.317 回答
3

每当我想知道如何在金字塔中做某事时,我通常会参考 github 上的金字塔示例之一。

解析示例金字塔配置

我不知道它们有多“火爆”,但它们通常工作得很好。在这里,它们就像ConfigParser您在任何 python 项目中一样使用来解析您的 .ini 文件

于 2012-06-07T13:04:01.633 回答
-2

想想“蟒蛇”而不是“金字塔”。

import ConfigParser

config = ConfigParser.ConfigParser()
config.read('development.ini')
db_url = config.get('app:main', 'sqlalchemy.url')
于 2014-08-16T13:21:51.287 回答