【问题标题】:UnicodeDecodeError in django 1.6 and allauthDjango 1.6 和 allauth 中的 UnicodeDecodeError
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-16
      • 1970-01-01
      • 2022-11-02
      • 1970-01-01
      • 2017-02-23
      • 1970-01-01
      • 2020-08-04
      相关资源
      最近更新 更多