该篇文章主要翻译于:https://pypi.python.org/pypi/python-decouple/

有不对的地方望各位大神指出,谢谢。

decouple简介

将设置从代码中分离开
decouple将帮助你解析你的程序配置文件,达到更改你的设置而不用重新部署程序的效果


decouple完成的事情:

1. 在ini或者.env文件中存储你的参数
2. 定义你的默认值
3. 适当的将你的配置转换成合适的值
4. 你的程序中只需要一个配置模块来进行设置
 decouple最开始是为django开发的,后面成为了一个独立通用的工具,将配置从代码中分离
 

为什么要使用decouple?

通常情况下,web框架会设置不同种类的参数:

    1. 语言环境和国际化
    2. 中间件和应用程序
    3. 资源存储相关:数据库,cache类。等
    4. 外部服务凭证:Amazon S3或者Twitter
    5.  预上线环境的设置
前两个是整个项目的设置,后面是部署实例的设置
 
 

为什么我们不直接使用环境变量呢?

我们都知道环境变量通过os.environ获取,但是返回的是字符串,比较棘手
例如,你有一个环境换量DEBUG=False,你可能可以运行如下代码
这段代码将返回True,因为os.environ['DEBUG'] 返回的是一个字符串"False",因为这是一个非空字符串,所以返回True
Decouple提供一种能够解决这个问题的解决方案:config('DEBUG', cast=bool)
 
if os.environ['DEBUG']:print True
else:print False

Decouple的安装:

pip install python-decouple

使用方法:
在你的settings.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支持两种类型:.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模块支持字符串填充的原因,百分号%应该由两个百分号,也就是%%代替
ENV文件示例:

在你的程序的根目录中创建一个.env文件,例如:

DEBUG=True
TEMPLATE_DEBUG=True
SECRET_KEY=ARANDOMSECRETKEY
DATABASE_URL=mysql://myuser:mypassword@myhost/mydatabase
PERCENTILE=90%
#COMMENTED=42

我在django中因该怎么使用呢?
如果我在我的程序根目录有一个.env 文件,下面是我的setting.py程序的一个片段,下面的程序,我推荐unipath和dj-database-url(这两个库很简单以后我再来介绍)一起配合使用:
# coding: utf-8
from decouple import config
from unipath import Path
from dj_database_url import parse as db_urlBASE_DIR = Path(__file__).parentDEBUG = config('DEBUG', default=False, cast=bool)
TEMPLATE_DEBUG = DEBUGDATABASES = {'default': config('DATABASE_URL',default='sqlite:///' + BASE_DIR.child('db.sqlite3'),cast=db_url)
}TIME_ZONE = 'America/Sao_Paulo'
USE_L10N = True
USE_TZ = TrueSECRET_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介绍一个开源项目bootcamp,这个项目可以让你很快的入门django:

https://github.com/vitorfs/bootcamp

转载于:https://www.cnblogs.com/leeronggui/p/5380050.html

python-decouple简介相关推荐

  1. 《从问题到程序:用Python学编程和计算》——1.2 Python语言简介

    本节书摘来自华章计算机<从问题到程序:用Python学编程和计算>一书中的第1章,第1.2节,作者 裘宗燕,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 1. ...

  2. Python列表简介

    Python列表简介 什么是列表 #普通的变量定义形式 tom ='Tom' jack ='Jack' john ='John'pet1 ='cat' pet2 ='dog' pet3 ='bird' ...

  3. Python编程简介

    Python编程简介 2011年06月23日 NOTE: The following is a short tutorial about python program, for Chinese rea ...

  4. 大数据教程【05.01】--Python 数据分析简介

    更多信息请关注WX搜索GZH:XiaoBaiGPT Python数据分析简介 本教程将介绍如何使用Python进行大数据分析.Python是一种功能强大且易于使用的编程语言,具备丰富的数据分析库和工具 ...

  5. Python基础知识(Python的简介、Python环境的安装、集成开发环境Pycharm的安装)

    1.Python的简介 python是跨平台的计算机语言.解释型语言.交互式语言.面向对象语言.初学者最好学的语言 什么是跨平台:意思就是说可以在很多操作系统中执行.比如:可以在windows操作系统 ...

  6. Python Notebook简介

    windows下面安装和使用Python, IPython NoteBook (详细步骤) Python Notebook简介1 IPython notebook目前已经成为用Python做教学.计算 ...

  7. python画图简介

    python画图简介 1.seaborn学习资料 2.matplotlib学习资料 3.扩展学习资料 4.实际练习 5.常用命令(待补充) 6.常用知识点备查 6.1 plt的默认属性rc参数 6.2 ...

  8. Python库简介之pylab

    Python库简介之pylab 转载于 链接: https://blog.csdn.net/qq_34519492/article/details/96437901 https://blog.csdn ...

  9. python笔记-简介

    一Python的简介 一历史简介 Python诞生于1991年,目前有27年了,比1995年的JAVA语言都早了4年,为何大器晚成? 其一,在1990那个年代,计算机性能相比现在差很多,程序执行速度和 ...

  10. Indigo | Indigo(Python)简介、安装与入门

    Indigo简介 Bingo: 针对Oracle,Microsoft SQL Server和PostgreSQL数据库的化学搜索引擎 Indigo: U具有与.NET,Java和Python绑定的通用 ...

最新文章

  1. Can't connect to MySQL server on 'localhost' (1...
  2. 启动项目出现com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException异常解决方法
  3. 库克宣布苹果将捐款帮助山西
  4. sklearn报错DeprecationWarning: the imp module is deprecated in favour of importlib
  5. python选择排序算法图解_简单选择排序算法(C语言详解版)
  6. i++与++i的区别+汇编分析
  7. HTC G14解锁S OFF 刷机 获取ROOT权限
  8. git tag (打标签)
  9. Kaggle注册及绑定手机号
  10. 苹果电脑表格取消自动计算机,苹果电脑excel序列被隐藏怎么办
  11. 手机电脑传文件?教你三种最简单的方法!
  12. 不能学习vlan的解决
  13. 日撸 Java 三百行: DAY1 AND DAY2
  14. Promise: 手写Promise
  15. 数据结构--图的存储结构
  16. Verilog HDL学习笔记
  17. Vue项目在ie浏览器打不开的解决办法
  18. 使用函数求e的近似值 C语言 PTA
  19. IDA dword_xxx DCD 0xxxx用十六进制数表示的字符串解读
  20. mobx系列(二)-mobx主要概念

热门文章

  1. 字节跳动 8 年,抖音、头条的技术能力开发者都可以用起来了!
  2. RC / RL串联电路计算
  3. 360n6pro刷鸿蒙系统,360手机N6Pro有没事用win10刷机成功的交流一下心得
  4. ios漂亮的启动动画
  5. java跑酷游戏_HTML5游戏实战(1):50行代码实现正面跑酷游戏
  6. html5中表格怎么写,HTML5制作表格样式本
  7. 信念就是一种观念对不对_思路决定出路 观念决定方向 性格决定命运 要改变命运 先确立信念...
  8. 软件工程概述思维导图总结(二)
  9. 银行管理系统java论文_基于java的银行账户管理系统的设计与实现毕业论文.doc
  10. iOS基础教程:记录从零开始到APP发布过程