【发布时间】:2015-01-05 01:56:25
【问题描述】:
我正在尝试在我的本地计算机上运行一个 django 网站。它在外部服务器上运行良好,但我没有设置它,现在我无法访问所有规范。
我遇到的问题是当我尝试以已定义的用户身份登录网站时。在调试模式下运行,我会得到一个详细的错误页面,其中包含消息:
UnicodeDecodeError 在 /accounts/login/ “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 是一个 50 个字符的字符串,与我的配置文件中定义的 SECRET_KEY 相同。变量secret通过以下方式在函数中赋值:
如果秘密是无: 秘密 = settings.SECRET_KEY我知道此时 secret 是 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、opensuse 13.2 进行了测试,结果相同。
感谢任何帮助或提示。
一个
【问题讨论】:
标签: django python-2.7 django-allauth