标签:
改篇文章主要翻译于:https://pypi.python.org/pypi/python-decouple/
有不对的地方望各位大神指出,谢谢。
decouple简介:
将设置从代码中分离开
decouple将帮助你解析你的程序配置文件,达到更改你的设置而不用重新部署程序的效果
通常情况下,web框架会设置不同种类的参数:
if os.environ[‘DEBUG‘]: print True else: print False
Decouple的安装:
pip install python-decouple
from decouple import config
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)
[settings] DEBUG=True TEMPLATE_DEBUG=%(DEBUG)s SECRET_KEY=ARANDOMSECRETKEY DATABASE_URL=mysql://myuser:mypassword@myhost/mydatabase PERCENTILE=90%% #COMMENTED=42
在你的程序的根目录中创建一个.env文件,例如:
DEBUG=True TEMPLATE_DEBUG=True SECRET_KEY=ARANDOMSECRETKEY DATABASE_URL=mysql://myuser:mypassword@myhost/mydatabase PERCENTILE=90% #COMMENTED=42
# 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 将抛出一个UndefinedValueErrorDEBUG=True python manage.py
这是什么原理呢?
Decouple 有5个类:
一个简单的例子:
.evn文件
user_info=root port=3306 ipadd=127.0.0.1 switch=on
pyton解析文件:
import decouple config = decouple.AutoConfig() ipadd = config(‘ipadd‘) print ipadd
详细的具体用法可以读bootcamp的源码:
https://github.com/vitorfs/bootcamp
标签:
原文地址:http://www.cnblogs.com/leeronggui/p/5380050.html