dj environ允许您利用12个受因子启发的环境变量来配置django应用程序。

dj-environ的Python项目详细描述


dj environ允许您利用12个受因子启发的环境变量来配置django应用程序。

Latest version released on PyPiMonthly downloadsPackage license

这是安装dj environ之前的settings.py文件

importosSITE_ROOT=os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))DEBUG=TrueTEMPLATE_DEBUG=DEBUGDATABASES={'default':{'ENGINE':'django.db.backends.postgresql_psycopg2','NAME':'database','USER':'user','PASSWORD':'githubbedpassword','HOST':'127.0.0.1','PORT':'8458',}'extra':{'ENGINE':'django.db.backends.sqlite3','NAME':os.path.join(SITE_ROOT,'database.sqlite')}}MEDIA_ROOT=os.path.join(SITE_ROOT,'assets')MEDIA_URL='media/'STATIC_ROOT=os.path.join(SITE_ROOT,'static')STATIC_URL='static/'SECRET_KEY='...im incredibly still here...'CACHES={'default':{'BACKEND':'django.core.cache.backends.memcached.MemcachedCache','LOCATION':['127.0.0.1:11211','127.0.0.1:11212','127.0.0.1:11213',]},'redis':{'BACKEND':'django_redis.cache.RedisCache','LOCATION':'127.0.0.1:6379:1','OPTIONS':{'CLIENT_CLASS':'django_redis.client.DefaultClient','PASSWORD':'redis-githubbed-password',}}}

之后:

importenvironroot=environ.Path(__file__)-3# three folder back (/a/b/c/ - 3 = /)env=environ.Env(DEBUG=(bool,False),)# set default values and castingenviron.Env.read_env()# reading .env fileSITE_ROOT=root()DEBUG=env('DEBUG')# False if not in os.environTEMPLATE_DEBUG=DEBUGDATABASES={'default':env.db(),# Raises ImproperlyConfigured exception if DATABASE_URL not in os.environ'extra':env.db('SQLITE_URL',default='sqlite:////tmp/my-tmp-sqlite.db')}public_root=root.path('public/')MEDIA_ROOT=public_root('media')MEDIA_URL='media/'STATIC_ROOT=public_root('static')STATIC_URL='static/'SECRET_KEY=env('SECRET_KEY')# Raises ImproperlyConfigured exception if SECRET_KEY not in os.environCACHES={'default':env.cache(),'redis':env.cache('REDIS_URL')}

您还可以将read_env()显式路径传递给.env文件。

创建一个.env文件:

DEBUG=on
# DJANGO_SETTINGS_MODULE=myapp.settings.dev
SECRET_KEY=your-secret-key
DATABASE_URL=psql://urser:un-githubbedpassword@127.0.0.1:8458/database
# SQLITE_URL=sqlite:///my-local-sqlite.db
CACHE_URL=memcache://127.0.0.1:11211,127.0.0.1:11212,127.0.0.1:11213
REDIS_URL=rediscache://127.0.0.1:6379:1?client_class=django_redis.client.DefaultClient&password=redis-un-githubbed-password

如何安装

$ pip install dj-environ

如何使用

只有两个类,environ.Envenviron.Path

>>>importenviron>>>env=environ.Env(DEBUG=(bool,False),)>>>env('DEBUG')False>>>env('DEBUG',default=True)True>>>open('.myenv','a').write('DEBUG=on')>>>environ.Env.read_env('.myenv')# or env.read_env('.myenv')>>>env('DEBUG')True>>>open('.myenv','a').write('\nINT_VAR=1010')>>>env.int('INT_VAR'),env.str('INT_VAR')1010,'1010'>>>open('.myenv','a').write('\nDATABASE_URL=sqlite:///my-local-sqlite.db')>>>env.read_env('.myenv')>>>env.db(){'ENGINE':'django.db.backends.sqlite3','NAME':'my-local-sqlite.db','HOST':'','USER':'','PASSWORD':'','PORT':''}>>>root=env.path('/home/myproject/')>>>root('static')'/home/myproject/static'

支持的类型

  • str
  • 布尔
  • 内景
  • 浮动
  • json
  • 列表(foo=a,b,c)
  • 元组(foo=(a,b,c))
  • dict(bar=key=val,foo=bar)环境环境(bar=(dict,{}))
  • dict(bar=key=val;foo=1.1;baz=true)环境环境(bar=(dict(value=unicode,cast=dict(foo=float,baz=bool)),{}))
  • 网址
  • 路径(环境路径)
  • 数据库URL
    • postgresql:postgres://、pgsql://、psql://或postgresql://
    • postgis:postgis://
    • mysql:mysql://或mysql2://
    • 用于geodjango的mysql:mysqlgis://
    • sqlite:sqlite://
    • Geodjango的Sqlite和Spatialite:Spatialite://
    • 甲骨文:甲骨文://
    • LDAP:ldap://
  • 缓存URL
    • 数据库:dbcache://
    • dummy:dummycache://
    • 文件:filecache://
    • 内存:locmemcache://
    • memcached:memcache://
    • python内存:pymemcache://
    • redis:rediscache://
  • 搜索URL
    • 弹性搜索:弹性搜索://
    • solr:solr://
    • 呼:呼://
    • Xapian:Xapian://
    • 简单缓存:简单://
  • 电子邮件地址
    • smtp:smtp://
    • smtp+ssl:smtp+ssl://
    • smtp+tls:smtp+tls://
    • 控制台邮件:控制台电子邮件://
    • 文件邮件:文件邮件://
    • locmem邮件:memorymail://
    • 虚拟邮件:dummymmail://

提示

在url中使用不安全字符

为了使用不安全的字符,在设置到.env文件之前,必须使用urllib.parse.encode编码。

DATABASE_URL=mysql://user:%23password@127.0.0.1:3306/dbname

参考https://perishablepress.com/stop-using-unsafe-characters-in-urls/

电子邮件设置

为了设置django的电子邮件配置,您可以使用以下代码:

EMAIL_CONFIG=env.email_url('EMAIL_URL',default='smtp://user@:password@localhost:25')vars().update(EMAIL_CONFIG)

测试

$ git clone https://github.com/ratson/dj-environ.git
$ cd dj-environ/
$ python setup.py test

学分

这是django-environ的叉子, 有以下区别,

  • 使用unix域套接字路径支持postgresql url,例如postgres:///var/run/postgresql/db

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
CentOS上的java Spring Boot简易应用程序需要很长时间才能启动   java如何检查字符串值是否等于null?   收集器中的java映射值。分组方式()   java需要支持Azure AD B2C webapp集成   java如何加入线程以停止它?   java如何使用意图传递类的对象?   java如何在战争环境中发现CDI生产者?   多模块项目中java奇怪的编译器行为   java如何在web应用程序中管理密码?   java从http服务器、filehandler中删除冗余代码   java使用反射来获取泛型类的字段   java Spring MVC/Hibernate/MySQL 400错误请求错误   给定正整数a的java幂为3   在Java中将元素拆分为不同数量的列表?   java展开折叠窗格