ピラミッドプロジェクトにはdevelopment.iniまたはproduction.iniがあります。次のようなiniファイルに独自の構成データを追加します。
[thrift]
host = 0.0.0.0
port = 8080
プロジェクト内のpyファイルの1つで構成データを使用したいと思います。リクエストオブジェクトなしでデータを取得するにはどうすればよいですか?(リクエストを使用するソリューションを見てきました。)
request.registry.settings
またはで設定にアクセスできますpyramid.threadlocal.get_current_registry().settings
。辞書のように動作します。
2つ目、つまりリクエストなしで設定を取得する場合は、警告する必要があります。ドキュメントによると:
この関数は、通常、単体テストコードでのみ、非常に慎重に使用する必要があります。get_current_registryをテストコンテキストの外で使用することは、ほとんどの場合間違いです。これを使用すると、簡単にテストもスクリプト化もできないコードを記述できるためです。
設定にアクセスする必要があるコードの部分はすべてWebアプリケーションの一部であり、魔法のようにアクセス可能なグローバルではなく、リクエストにアクセスする必要があります。正当な理由があると思うかもしれませんが、おそらくもっと良い方法があります。それについて話し合いたい場合(コードが役立つので、複雑な場合は別の質問で)、私はあなたがそれを行うためのクリーンな方法を見つけるのを喜んでお手伝いします。
ピラミッドで何かを行う方法を疑問に思うときはいつでも、私は通常githubのピラミッドの例の1つを参照します。
それらがどれほど「ピルマディック」であるかはわかりませんが、通常は正常に機能します。ここでConfigParser
は、Pythonプロジェクトで使用するのと同じように、.iniファイルを解析するために使用します。
「ピラミッド」ではなく「パイソン」と考えてください。
import ConfigParser
config = ConfigParser.ConfigParser()
config.read('development.ini')
db_url = config.get('app:main', 'sqlalchemy.url')