django 1.6和allauth中的UnicodeDecodeError

时间:2015-01-05 01:56:25

标签: django python-2.7 django-allauth

我正在尝试在我的本地计算机上运行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,结果相同。

感谢您提供任何帮助或提示。

1 个答案:

答案 0 :(得分:0)

问题解决了:我的配置文件中的密钥以(unicode)开头引号开头,而不是常规的双引号,可能是复制和粘贴使用这些编辑器的编辑器编写的原始文件的结果。更聪明的“报价。