如何在Django Web应用程序中正确更改分配的密钥

时间:2017-03-10 19:57:04

标签: python django secret-key

所以,我试图将Django Web App部署到生产环境,但我想在这之前更改密钥。

我尝试使用随机函数生成新密钥,并插入新密钥代替旧密钥。当我这样做时,我收到一个错误,说明如下: AttributeError的 '模块'对象没有属性' JSONEncoder' ... 例外位置... / django / contrib / messages / storage / cookie.py in,第9行

我删除了浏览器缓存并重新启动了服务器,但错误仍然存​​在。 我还尝试更改密钥,删除浏览器缓存并重新启动后,错误仍然存​​在。

知道如何解决此问题吗?

编辑:Python版本为2.6.6,Django版本为1.3.1

2 个答案:

答案 0 :(得分:3)

因此,要回答我自己的问题,更改指定的键的方式与更改任何其他变量的方式相同。只需创建一个50个字符(理想的随机)字符串并将SECRET_KEY设置为等于它。

SECRET_KEY =“#$%& N(ASFGAD ^ *(%326n26835625BEWSRTSER& ^ @ T#%$ Bwertb”

然后重新启动Web应用程序。

我的问题完全不相关。之所以发生是因为我设置了python用于将包定位到一个奇怪位置的路径。抱歉,那些家伙。

答案 1 :(得分:3)

我喜欢使用此模式(您可以在其中放置应用的名称而不是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)

然后在运行Django的帐户中,我在.bashrc中导出此变量(使用适用的环境配置文件):

export APP_NAME_SECRET_KEY='oysmy1iv=n7ygq%og!b4@(k@40&5d-i&5%^c8$riw%3$r3yi(='

注意:在网络搜索后,该密钥是随生成器的第一个网址随机生成的:生成一个secret_key django。