2017-09-21 36 views
0

我的Django项目的密钥包含特殊字符,如#@^*等我试图在/etc/environment设置此为环境变量。如何稳健地设置Django的密钥作为一个环境变量

我在文件中包含以下内容:

export SECRET_KEY='zotpbek!*t_abkrfdpo!*^@#plg6qt-x6(%dg)9p(qoj_r45y8' 

即由于它包含特殊字符(也由this SO帖子规定),所以我在字符串周围加了单引号。我退出该文件并执行source /etc/environment。接下来我在终端输入envSECRET__KEY正确显示。

我注销并重新登录。我再次输入env

这次SECRET_KEY仍然显示,但被截断超过@字符。它排除了(包括)#字符以外的所有内容。

如何解决此问题?尝试用双引号也没有缓解任何事情。我的操作系统是Ubuntu 14.04 LTS。


p.s.我知道环境变量不支持访问控制;有很多理由不把Django密钥设置为env var。为了这个问题的目的,让我们把它放在后面。

回答

0

这不是Django本身的问题。根据这个问题Escape hash mark (#) in /etc/environment不能使用/etc/environment中的“#”。

我会建议你不断重新生成密钥,直到你找到没有#s的密钥 - 这应该解决问题。为此,Django Extensions有一个命令generate_secret_key。更改密钥的副作用​​是当前会话将失效,也就是说,除非您在应用程序中的其他位置使用它。

+1

那么为什么最初设置密钥后正确显示密钥? –