金字塔项目中有development.ini或production.ini。我添加自己的配置数据 ini文件如:
[thrift]
host = 0.0.0.0
port = 8080
我想在项目中的一个py文件中使用配置数据。 如何在没有请求对象的情况下获取数据? (我见过一个使用请求的解决方案。)
答案 0 :(得分:23)
您可以访问request.registry.settings
或pyramid.threadlocal.get_current_registry().settings
的设置。它的行为就像字典一样。
如果你想使用第二个,即在没有请求的情况下获取设置,我必须警告你。根据{{3}}:
这项功能应该非常谨慎地使用,通常只在单位使用 测试代码。使用它几乎总是一个错误 get_current_registry在测试上下文之外,因为它的用法 有可能编写既不容易测试也不容易测试的代码 脚本。
您的代码中需要访问设置的任何部分都是Web应用程序的一部分,应该访问请求,而不是一些神奇可访问的全局。你可能认为你有充分的理由,但可能有更好的方法。如果你想讨论这个问题(也许在另一个问题中,如果它很复杂,因为有些代码会有帮助),我很乐意帮助你找到一个干净的方法来做到这一点。
答案 1 :(得分:2)
每当我想知道如何在金字塔中做某事时,我通常会参考github上的一个金字塔示例。
Parsing Example Pyramid Config
我不知道他们是多么“疯子”,但他们的工作正常。就像在任何python项目中一样使用ConfigParser
来解析你的.ini文件
答案 2 :(得分:-2)
想想'python'而不是'金字塔'。
import ConfigParser
config = ConfigParser.ConfigParser()
config.read('development.ini')
db_url = config.get('app:main', 'sqlalchemy.url')