美文网首页
django-environ使用

django-environ使用

作者: DjangoUnchained | 来源:发表于2020-03-23 09:32 被阅读0次
介绍

为Django项目提供方便统一的配置信息管理模块,不仅可以简化配置项,还可以分别管理各个不同环境的配置。

安装依赖
django
django-environ==0.4.5
.env配置文件注意事项
  • 配置项中间不能有前后空格,例如:
    EMAIL_PORT=2525
  • 配置文件中不支持中文
  • 如果要支持读取中文,将environ/environ.py中634行改为:
with open(env_file, encoding='utf-8') if isinstance(env_file, basestring) else env_file as f:
  • 但是在linux服务器上读取中文时,返回的内容会多一层引号,像这样"'中文'",这里我的处理方式是在自己使用这个变量的地方去一下引号,"'中文'".split("'")
区分本地和生产环境方便书写

默认选择本地环境的配置文件,部署生产时,设置env_file环境变量即可
setting.py代码如下:

import environ

env = environ.Env()
env_path = env.path("env_file", default=".envs/.local/.django")
READ_DOT_ENV_FILE = env.bool("DJANGO_READ_DOT_ENV_FILE", default=True)
if READ_DOT_ENV_FILE:
    # OS environment variables take precedence over variables from .env
    env.read_env(str(ROOT_DIR / env_path))
配置mysql url
# DATABASE
# ----------databasetype://username:password@host:port/database--------------------------------------------------------------------
DATABASE_URL=mysql://root:root@localhost:3306/mydatabase
# django-environ中database相关配置源码
    DEFAULT_DATABASE_ENV = 'DATABASE_URL'
    DB_SCHEMES = {
        'postgres': DJANGO_POSTGRES,
        'postgresql': DJANGO_POSTGRES,
        'psql': DJANGO_POSTGRES,
        'pgsql': DJANGO_POSTGRES,
        'postgis': 'django.contrib.gis.db.backends.postgis',
        'mysql': 'django.db.backends.mysql',
        'mysql2': 'django.db.backends.mysql',
        'mysql-connector': 'mysql.connector.django',
        'mysqlgis': 'django.contrib.gis.db.backends.mysql',
        'mssql': 'sql_server.pyodbc',
        'oracle': 'django.db.backends.oracle',
        'pyodbc': 'sql_server.pyodbc',
        'redshift': 'django_redshift_backend',
        'spatialite': 'django.contrib.gis.db.backends.spatialite',
        'sqlite': 'django.db.backends.sqlite3',
        'ldap': 'ldapdb.backends.ldap',
    }
    _DB_BASE_OPTIONS = ['CONN_MAX_AGE', 'ATOMIC_REQUESTS', 'AUTOCOMMIT']
配置Celery
# Celery
# ------------------------------------------------------------------------------
CELERY_BROKER_URL=amqp://guest:guest@127.0.0.1:5672//
配置Redis Cache
# Redis
# ------------------------------------------------------------------------------
# DefaultClient
REDIS_URL=redis://localhost:6379/?client_class=django_redis.client.DefaultClient
# django-environ中SCHEMES可选择类型
    DEFAULT_CACHE_ENV = 'CACHE_URL'
    CACHE_SCHEMES = {
        'dbcache': 'django.core.cache.backends.db.DatabaseCache',
        'dummycache': 'django.core.cache.backends.dummy.DummyCache',
        'filecache': 'django.core.cache.backends.filebased.FileBasedCache',
        'locmemcache': 'django.core.cache.backends.locmem.LocMemCache',
        'memcache': 'django.core.cache.backends.memcached.MemcachedCache',
        'pymemcache': 'django.core.cache.backends.memcached.PyLibMCCache',
        'rediscache': REDIS_DRIVER,
        'redis': REDIS_DRIVER,
    }
bool类型配置书写
field=env.bool("field", default=True)
# django-environ中源码
BOOLEAN_TRUE_STRINGS = ('true', 'on', 'ok', 'y', 'yes', '1')
其他注意事项
  • 在docker容器中如果更新了某个环境变量的值,直接重启容器是无法更新环境变量的值的。
    必须重新up容器才能生效。
  • 容器中环境变量值的存储的文件是在/etc/default/locale

相关文章

网友评论

      本文标题:django-environ使用

      本文链接:https://www.haomeiwen.com/subject/owajyhtx.html