首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在哪里设置Django的环境变量?

在哪里设置Django的环境变量?
EN

Stack Overflow用户
提问于 2017-06-22 07:57:34
回答 5查看 35.7K关注 0票数 17

所有人!

Django 1.11 + PostgreSQL 9.6 + Gunicorn +Ubuntu16.04在AWS中

我想为敏感信息设置环境变量。(django密钥,DB密码.)

我研究了很多关于设置方法的文章。

但当我尝试os.env_name时,

  1. .bashrc:不工作
  2. .bash_profile:不工作
  3. .profile:不工作
  4. /etc/环境:不工作
  5. Gunicorn脚本文件。( systemd ):我将它们设置为武装系统脚本。效果很好。

但是由于我也想在其他程序中使用环境变量,所以我将它们设置在1~5个配置中。我不明白为什么1~5配置不起作用。是否有设置环境变量的范围或优先级?

编辑:

我使用Ubuntu16.04服务器。我无法重新启动终端会话。

我尝试了“源.bashrc”和注销/登录。但没起作用。

当然,'echo $some_env_var‘是有效的,我说,django不会阅读。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-06-22 08:01:43

在服务器中创建一个名为.bashrc的文件

代码语言:javascript
运行
复制
export('the_name_in_bashrc', some_value)

然后在settings.py

代码语言:javascript
运行
复制
import os
some_variable = os.environ.get('the_name_in_bashrc')
票数 10
EN

Stack Overflow用户

发布于 2018-03-03 01:55:28

.bashrc将为本地开发工作,而不是在生产环境中工作。我只是花了相当长的时间来寻找这个问题的答案,下面是对我有用的答案:

1)在服务器上创建一个名为settings.ini的文件。我是在/etc/project/setings.ini中这样做的

2)使用以下格式将配置数据添加到该文件中,其中键可以是环境变量,值是字符串。请注意,您不需要用引号包围该值。

代码语言:javascript
运行
复制
[section]
secret_key_a=somestringa
secret_key_b=somestringb

3)使用python的configparser库访问这些变量。下面的代码可能在django项目的设置文件中。

代码语言:javascript
运行
复制
from configparser import RawConfigParser

config = RawConfigParser()
config.read('/etc/project/settings.ini')

DJANGO_SECRET = config.get('section', 'secret_key_a')

资料来源:https://code.djangoproject.com/wiki/SplitSettings (ini风格部分)

票数 19
EN

Stack Overflow用户

发布于 2019-12-16 15:22:39

最简单的解决方案是使用os.environ.get,然后以某种方式设置服务器环境变量(配置存储、bash文件等)。

另一种稍微复杂的方法是使用python-解耦和.env文件。下面是一个简单的方法:

1)安装python-解耦(如果不使用Docker,最好安装在venv中):

代码语言:javascript
运行
复制
pip install python-decouple

2)在Django-project的根目录中创建一个.env文件,添加一个类似的键;

代码语言:javascript
运行
复制
SECRET_KEY=SomeSecretKeyHere

3)在您的settings.py或任何其他要使用配置值的文件中:

代码语言:javascript
运行
复制
from decouple import config

...

SECRET_KEY = config('SECRET_KEY')

4)由于您可能不希望这些秘密最终出现在您的版本控制系统中,所以将该文件添加到您的.gitignore中。为了更容易地设置一个新项目,您可以将一个.env_default签入包含缺省/虚拟值的VCS中,这些值在生产中没有使用。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44693485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档