Enr*_*sey 8 python django secret-key
因此,我正在尝试将 Django Web App 部署到生产环境中,但我想在此之前更改密钥。
我尝试使用随机化函数生成一个新密钥,并插入该新密钥代替旧密钥。当我这样做时,我收到一条错误消息,内容如下:
AttributeError 'module' object has no attribute 'JSONEncoder' ... Exception Location .../django/contrib/messages/storage/cookie.py in , line 9
我已经删除了浏览器缓存并重新启动了服务器,但错误仍然存在。我也尝试将密钥改回,删除浏览器缓存并重新启动后,错误仍然存在。
知道如何解决这个问题吗?
编辑:Python 版本是 2.6.6,Django 版本是 1.3.1
因此,为了回答我自己的问题,更改分配的键的方式与更改任何其他变量的方式相同。只需创建一个 50 个字符(最好是随机的)字符串并将 SECRET_KEY 设置为等于它。
SECRET_KEY = "#$%&N(ASFGAD^*(%326n26835625BEWSRTSER&^@T#%$Bwertb"
然后重新启动 Web 应用程序。
我的问题完全无关。发生这种情况是因为我设置了 python 用来将包定位到一个奇怪位置的路径。对不起那些人。
我喜欢使用这种模式(您可以在其中放置应用程序名称而不是 APP_NAME):
# SECURITY WARNING: keep the secret key used in production secret!
secret_key_env_variable_name = 'APP_NAME_SECRET_KEY'
SECRET_KEY = os.environ.get(secret_key_env_variable_name)
if len(SECRET_KEY) < 25:
print( 'The value of $%s does not contain enough characters (%s characters)' % (secret_key_env_variable_name, len(SECRET_KEY)))
raise RuntimeError('SECRET_KEY is not long enough (in environment variable "%s"' % secret_key_env_variable_name)
Run Code Online (Sandbox Code Playgroud)
然后在运行 Django 的帐户中,我在 .bashrc 中导出此变量(使用您适用的环境配置文件):
export APP_NAME_SECRET_KEY='oysmy1iv=n7ygq%og!b4@(k@40&5d-i&5%^c8$riw%3$r3yi(='
Run Code Online (Sandbox Code Playgroud)
注意:该密钥是在网络搜索后使用生成器的第一个 url 随机生成的:生成一个 secret_key django。