我的Django项目的 key 包含特殊字符,例如#
、@
、^
、*
等。我试图将其设置为 /etc/environment
中的环境变量。
我在文件中包含以下内容:
export SECRET_KEY='zotpbek!*t_abkrfdpo!*^@#plg6qt-x6(%dg)9p(qoj_r45y8'
即我在字符串周围添加了单引号,因为它包含特殊字符(也由 this SO post 规定)。我退出文件并执行source/etc/environment
。接下来,我在终端中输入 env
:SECRET__KEY
正确显示。
我注销并重新登录。我再次输入 env
。
这次 SECRET_KEY
仍然显示,但在 @
字符之外被截断。它排除了 #
字符之外(并包括)的所有内容。
如何解决这个问题?尝试使用双引号也没有缓解任何问题。我的操作系统是 Ubuntu 14.04 LTS。
附:我知道环境变量不支持访问控制;有很多理由不将 Django key 设置为环境变量。出于这个问题的目的,让我们把它放在次要位置。
最佳答案
这本身不是 Django 问题。根据这个问题Escape hash mark (#) in /etc/environment您不能在/etc/environment
中使用“#”。
我建议您继续重新生成您的 key ,直到获得一个没有 #s 的 key ——这应该可以解决问题。 Django Extensions为此有一个命令generate_secret_key
。更改 key 的副作用是当前 session 将变得无效,也就是说,除非您在应用程序中的其他地方使用它。
关于django - 如何将 Django key 设置为环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46345036/