5

ピラミッドでは、さまざまなランタイム環境に従ってテンプレートをレンダリングする必要があります。Google アナリティクスを有効にしたり、縮小されたコードを使用したりします (本番環境の場合)。現在の環境を見つける簡単な方法はありますか?おそらく、使用されたiniファイルを見つけるための既存のフラグですか?

4

2 に答える 2

15

Pyramid INI ファイルは任意の構成エントリを保持できるため、本番環境と開発環境を区別するフラグをファイルに含めてみませんか?

私ならこうします。実動 .ini ファイルで:

[app:main]
production_deployment = True # Set to False in your development .ini file

この値を Pyramid Configurator に渡します。

def main(global_config, **settings):
    # ...
    from pyramid.settings import asbool
    production_deployment = asbool(settings.get(
               'production_deployment', 'false'))
    settings['production_deployment'] = production_deployment
    config = Configurator(settings=settings)

Pyramid コードのほぼどこからでも設定にアクセスできるようになりました。たとえば、リクエスト ハンドラでは次のようになります。

settings = request.registry.settings
if settings['production_deployment']:
    # Enable some production code here.

ただし、この場合はより細かい設定も使用します。Google アナリティクスを有効にするためのフラグ、リソースを最小化するためのフラグなど。これにより、開発環境で個々の設定をテストしたり、これらのスイッチの単体テストを作成したりできます。

于 2012-06-11T06:43:52.337 に答える
3

この種のものを、PYRAMID_ENVで表示できるような名前の環境変数として設定しますos.environ。たとえば、コードで:

import os

pyramid_env = os.environ.get('PYRAMID_ENV', 'debug')

if pyramid_env == 'debug':
    # Setup debug things...
else:
    # Setup production things...

次に、init スクリプトで、またはサーバーの起動時に変数を設定できます。

PYRAMID_ENV=production python server.py

環境変数へのアクセスに関するドキュメント: http://docs.python.org/library/os.html#os.environ

于 2012-06-11T06:29:34.397 に答える