15

ピラミッドプロジェクトにはdevelopment.iniまたはproduction.iniがあります。次のようなiniファイルに独自の構成データを追加します。

[thrift]
host = 0.0.0.0
port = 8080

プロジェクト内のpyファイルの1つで構成データを使用したいと思います。リクエストオブジェクトなしでデータを取得するにはどうすればよいですか?(リクエストを使用するソリューションを見てきました。)

4

3 に答える 3

26

request.registry.settingsまたはで設定にアクセスできますpyramid.threadlocal.get_current_registry().settings。辞書のように動作します。

2つ目、つまりリクエストなしで設定を取得する場合は、警告する必要があります。ドキュメントによると:

この関数は、通常、単体テストコードでのみ、非常に慎重に使用する必要があります。get_current_registryをテストコンテキストの外で使用することは、ほとんどの場合間違いです。これを使用すると、簡単にテストもスクリプト化もできないコードを記述できるためです。

設定にアクセスする必要があるコードの部分はすべてWebアプリケーションの一部であり、魔法のようにアクセス可能なグローバルではなく、リクエストにアクセスする必要があります。正当な理由があると思うかもしれませんが、おそらくもっと良い方法があります。それについて話し合いたい場合(コードが役立つので、複雑な場合は別の質問で)、私はあなたがそれを行うためのクリーンな方法を見つけるのを喜んでお手伝いします。

于 2012-06-05T10:28:39.317 に答える
3

ピラミッドで何かを行う方法を疑問に思うときはいつでも、私は通常githubのピラミッドの例の1つを参照します。

ピラミッド構成の例の解析

それらがどれほど「ピルマディック」であるかはわかりませんが、通常は正常に機能します。ここで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 に答える