我正在尝试在我的本地计算机上运行django网站。它在外部服务器上工作正常,但我没有设置它,现在我没有访问所有规格。
我遇到的问题是当我尝试以已定义的用户身份登录网站时。在调试模式下运行我得到一个详细的错误页面,其中包含消息:
/ accounts / login /中的UnicodeDecodeError 'ascii'编解码器无法解码位置0的字节0xe2:序数不在范围内(128)
向下看我可以看到错误发生在crypto.py,行中的函数salted_hmac
key = hashlib.sha1((key_salt + secret).encode('utf-8'))。digest()
并显示我看到的局部变量
key_salt u'django.contrib.sessionsSessionStore'
秘密'\ xe2 \ x80 \ x9cXXX“'
值'{}'
其中XXX是与我的配置文件中定义的SECRET_KEY相同的50个字符的字符串。通过以下方式在函数中分配可变密钥:
if secret is None: secret = settings.SECRET_KEY
我知道此时秘密是None,因为它是salted_hmac中的第三个参数,并未被调用者使用。我强烈怀疑发生错误是因为python无法处理变量secret开头的unicode字符。
所以我有几个问题:
1)为什么setting.SECRET_KEY与我在配置文件中定义的SECRET_KEY不同?它应该是怎么回事?如果可以,我可以控制它应该是什么?
2)我的环境中有什么东西可以对此负责吗?
一些注意事项:正如我所提到的,它可以在服务器上运行,运行ubuntu 1.6,python 2.7。但是我现在无法获得其他软件包的版本信息。但即使我可以,我仍然想知道为什么它对我的安装不起作用。我在lubuntu 14.04上测试了django 1.6.1,python 2.7,打开了13.2,结果相同。
感谢您提供任何帮助或提示。
一
答案 0 :(得分:0)
问题解决了:我的配置文件中的密钥以(unicode)开头引号开头,而不是常规的双引号,可能是复制和粘贴使用这些编辑器的编辑器编写的原始文件的结果。更聪明的“报价。