本文主要是整理如何在django项目中解决不同环境下加载不同.env环境配置文件的方案。主要内容包含django-environ的安装使用,以及django-crontab脚本环境下的配置使用。
<>强安装强>
官方django-environ github链接地址
pip安装django-environ
创建.env文件
#项目目录中 触摸.env #增加环境变量 DEBUG=True SECRET_KEY=your-secret-key DATABASE_URL=psql://有关:un-githubbedpassword@127.0.0.1:8458/数据库 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& # 63;=ungithubbed-secret client_class=django_redis.client.DefaultClient&密码 >之前与设置。py一起使用。为了方便使用目前使用gitlab为内网环境,故而.env不需要加入.gitignore,实现文件忽略上传。
进口环境 #初始化env env=environ.Env ( #集铸造、默认值 DEBUG=(bool,假) ) #读取.env文件 environ.Env.read_env () 如果不是os.environ #假 DEBUG=env(调试) #培养django的如果SECRET_KEY不在os.environ ImproperlyConfigured异常 SECRET_KEY=env (“SECRET_KEY”) #数据库连接url字符串解析psql://用户:pass@127.0.0.1:8458/db 数据库={ #读操作系统。环境(“DATABASE_URL”),如果没有找到提高ImproperlyConfigured例外 “默认”:env.db (), #读os.environ (“SQLITE_URL”) “额外”:env。db (“SQLITE_URL”,默认=' sqlite:////tmp/my-tmp-sqlite.db ') } 缓存={ #读操作系统。环境(“CACHE_URL”),如果没有找到提高ImproperlyConfigured例外 “默认”:env.cache (), #读os.environ (“REDIS_URL”) “复述”:env.cache (“REDIS_URL”) } >之前
在只使用一个设置。py文件情况下,可以只使用一个环境变量,通过此环境变量来读取不同环境的.env文件以区分不同环境。这个环境变量就没法写在.env文件了,必须手动指定。假设我们这个环境变量叫PROJECT_ENV。那么我们在命令行执行任何命令的时候,在前面加上PROJECT_ENV=xxx来指定环境变量。当然,也可以出口来指定这个环境变量,也可以修改外壳配置文件来指定这个环境变量,甚至supervisord和uwsgi的配置文件也可以指定环境变量。
<>强执行方法强>
python PROJECT_ENV=当地管理。py runserver >之前<强>多环境。env文件设置强>
假设目前存在当地以及产品两种环境,则在env下新建.env。当地以及.env。产品文件。
<强>设置。py代码兼容强>
进口操作系统 进口环境 进口logging.config #在项目构建路径:os.path。加入(BASE_DIR…) BASE_DIR=os.path.dirname (os.path.dirname (os.path.abspath (__file__))) env=environ.Env ( #集铸造、默认值 DEBUG=(bool,假) ) ”“” 通过指定环境遍历加载不同env文件 python PROJECT_ENV=生产管理。py crontab添加 默认场景下可不指定,则加载本地文件 ”“” env_name=env。str (“PROJECT_ENV”,“当地”) #读取.env文件 env.read_env (“env/.env。% s % env_name) >之前
django-crontab的使用可以参考django-crontab实现服务端的定时任务
<强>代码调整强>
在设置。py文件中,django-crontab配置任务计划下增加CRONTAB_COMMAND_PREFIX=
' PROJECT_ENV=' + env_name参数指定 计划=[ (“*/5 * * * *”、“analysis.cron。test_cron”、“祝辞祝辞;“+ LOG_DIR +“日志/fba_claim_shipment.log”), ] CRONTAB_COMMAND_PREFIX=+ env_name PROJECT_ENV=>之前执行方法
python PROJECT_ENV=当地管理。py crontab添加 >之前以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
Django项目通过加载不同env文件来区分不同环境