python-decoupleの概要


この文章は主に以下のように翻訳されています.https://pypi.python.org/pypi/python-decouple/
悪いところがあったら、大神さんに指摘してください.ありがとうございます.
decoupleの概要:
コードからdecoupleを離れると、プログラムプロファイルを解析し、プログラムを再配置することなく設定を変更する効果があります.
decoupleが完成したこと:
1.iniまたは.Envファイルにパラメータを格納
2.デフォルトを定義
3.適切な構成を適切な値に変換
4.あなたのプログラムには設定モジュールが1つしか必要ありません.
 
decoupleは最初はdjangoのために開発され、その後は独立した汎用ツールとなり、構成をコードから分離した.
 
なぜdecoupleを使うのですか?
通常、Webフレームワークでは、異なる種類のパラメータが設定されます.
    1. 言語環境と国際化
    2. ミドルウェアとアプリケーション
    3. リソースストレージ関連:データベース、cacheクラス.など
    4. 外部サービス証明書:Amazon S 3またはTwitter
    5. 事前オンライン環境の設定
最初の2つはプロジェクト全体の設定で、次は配置インスタンスの設定です.
 
 
なぜ環境変数を直接使用しないのですか?
環境変数がosを通過することはよく知られています.Environは取得しますが、文字列が返され、難しいです.
例えば、あなたは
個の環境は量DEBUG=Falseを交換して、あなたは次のコードを実行することができるかもしれません
 
このコードはTruを返します
e,os.Environ['DEBUG']は
文字列「False」は、空ではない文字列であるため、Trueを返します.
Decoupleはこの問題を解決できる解決策を提供します
:config('DEBUG', cast=bool)
 
if os.environ['DEBUG']:
    print True
else:
    print False

Decoupleのインストール:
pip install python-decouple

 
使用方法:
にある
あなたのpy.ファイルには、次のように書くことができます.
 
    1.configオブジェクトをインポートするには:
from decouple import config

     2. 構成パラメータの取得
SECRET_KEY = config('SECRET_KEY')
DEBUG = config('DEBUG', default=False, cast=bool)
EMAIL_HOST = config('EMAIL_HOST', default='localhost')
EMAIL_PORT = config('EMAIL_PORT', default=25, cast=int)

これらのプロファイルはどこに置けばいいですか?
Decoupleは2つのタイプをサポートしています.iniファイルと.Envファイル
INIファイルの例:
settingsを作成する.Iniファイル、次のステップでは、ファイルに次のフォーマットの構成を書き込むことができます.たとえば、次のようにします.
[settings]
DEBUG=True
TEMPLATE_DEBUG=%(DEBUG)s
SECRET_KEY=ARANDOMSECRETKEY
DATABASE_URL=mysql://myuser:mypassword@myhost/mydatabase
PERCENTILE=90%%
#COMMENTED=42

 
注意:ConfigParserモジュールは文字列の埋め込みをサポートするため、パーセンテージ%は2つのパーセンテージ、すなわち%%で代用する必要があります.
ENVファイルの例:
プログラムのルートディレクトリに作成します.Envファイル、例えば:
DEBUG=True
TEMPLATE_DEBUG=True
SECRET_KEY=ARANDOMSECRETKEY
DATABASE_URL=mysql://myuser:mypassword@myhost/mydatabase
PERCENTILE=90%
#COMMENTED=42

私はdjangoでどのように使うべきですか?
もし私がプログラムのルートディレクトリに1つあったら.Envファイル、次は私のsettingです.pyプログラムのセグメントです.次のプログラムは、unipathとdj-database-url(この2つのライブラリは簡単ですが、後で紹介します)を組み合わせて使用することをお勧めします.
# coding: utf-8
from decouple import config
from unipath import Path
from dj_database_url import parse as db_url
 
 
BASE_DIR = Path(__file__).parent
 
DEBUG = config('DEBUG', default=False, cast=bool)
TEMPLATE_DEBUG = DEBUG
 
DATABASES = {
    'default': config(
        'DATABASE_URL',
        default='sqlite:///' + BASE_DIR.child('db.sqlite3'),
        cast=db_url
    )
}
 
TIME_ZONE = 'America/Sao_Paulo'
USE_L10N = True
USE_TZ = True
 
SECRET_KEY = config('SECRET_KEY')
 
EMAIL_HOST = config('EMAIL_HOST', default='localhost')
EMAIL_PORT = config('EMAIL_PORT', default=25, cast=int)
EMAIL_HOST_PASSWORD = config('EMAIL_HOST_PASSWORD', default='')
EMAIL_HOST_USER = config('EMAIL_HOST_USER', default='')
EMAIL_USE_TLS = config('EMAIL_USE_TLS', default=False, cast=bool)
 
# ...

注意パラメータは定義されていません:
上記の例では、SECRET_KEY = config('SECRET_KEY'), .env を除いてデフォルトの構成パラメータがあります.'SECRET_KEY' .Envファイルにはずっとありません.decoupleはUndefinedValueErrorを投げ出します.
このポリシーでは、パラメータの構成を忘れたときに予期せぬ動作が発生します.
次に、環境変数に関連する最も重要なファイルについて説明します.
時には通過したくないことがあります.iniまたは.Envファイルはパラメータを変更し、3.0からdecoupleはunixの方法に従い、環境変数の優先度がプロファイル変数より高い.
プロファイルの変数を上書きできます.
DEBUG=True python manage.py

これは何の原理ですか.
Decoupleには5つのクラスがあります.
  • Config
  • プロファイルが存在する場所を取得する
  • .
  • RepositoryIni
  • は、osから順番に従う.Environ,iniファイルでの読み出し値
  • 注:3.0からunix環境変数はプロファイル変数
  • より高い.
  • RepositoryEnv
  • は、osから順番に従う.environ,.Envファイルからの読み出し値
  • 注:3.0からunix環境変数はプロファイル変数
  • より高い.
  • RepositoryShell
  • はosからだけです.Environで環境変数を取得する
  • AutoConfig
  • 使用する構成を確認します
  • 構成モジュールパスからsettingsを再帰的に検索します.iniまたは.Envファイル

  • 簡単な例です.
    .evnファイル
    user_info=root
    port=3306
    ipadd=127.0.0.1
    switch=on

    pyton解析ファイル:
    import decouple
    config = decouple.AutoConfig()
    ipadd = config('ipadd')
    print ipadd

    pythonでは、djangoにすぐにアクセスできるオープンソースプロジェクトbootcampを紹介します.
    https://github.com/vitorfs/bootcamp
     
    転載先:https://www.cnblogs.com/leeronggui/p/5380050.html