2017-09-21 35 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

那麼爲什麼最初設置密鑰後正確顯示密鑰? –