Django项目通过加载不同env文件来区分不同环境

  


  

  

本文主要是整理如何在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文件来区分不同环境