在升级到Flask 0.10之后,我得到了这个错误:
flask.debughelpers.UnexpectedUnicodeError
UnexpectedUnicodeError: A byte string with non-ASCII data was passed to the session system which can only store unicode strings. Consider base64 encoding your string (String was 'iB\rOU#\xf7BO\x08^\xa6\xd1)v\xad')
Traceback (most recent call last)
File "/srv/www/li/venv/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__
return self.wsgi_app(environ, start_response)
File "/srv/www/li/venv/lib/python2.7/site-packages/flask/app.py", line 1820, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/srv/www/li/venv/lib/python2.7/site-packages/flask/app.py", line 1403, in handle_exception
reraise(exc_type, exc_value, tb)
File "/srv/www/li/venv/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/srv/www/li/venv/lib/python2.7/site-packages/flask/app.py", line 1479, in full_dispatch_request
response = self.process_response(response)
File "/srv/www/li/venv/lib/python2.7/site-packages/flask/app.py", line 1693, in process_response
self.save_session(ctx.session, response)
File "/srv/www/li/venv/lib/python2.7/site-packages/flask/app.py", line 837, in save_session
return self.session_interface.save_session(self, session, response)
File "/srv/www/li/venv/lib/python2.7/site-packages/flask/sessions.py", line 321, in save_session
val = self.get_signing_serializer(app).dumps(dict(session))
File "/srv/www/li/venv/lib/python2.7/site-packages/itsdangerous.py", line 471, in dumps
return self.make_signer(salt).sign(self.dump_payload(obj))
File "/srv/www/li/venv/lib/python2.7/site-packages/itsdangerous.py", line 676, in dump_payload
json = super(URLSafeSerializerMixin, self).dump_payload(obj)
File "/srv/www/li/venv/lib/python2.7/site-packages/itsdangerous.py", line 454, in dump_payload
return self.serializer.dumps(obj)
File "/srv/www/li/venv/lib/python2.7/site-packages/flask/sessions.py", line 82, in dumps
return json.dumps(_tag(value), separators=(',', ':'))
File "/srv/www/li/venv/lib/python2.7/site-packages/flask/sessions.py", line 72, in _tag
return dict((k, _tag(v)) for k, v in iteritems(value))
File "/srv/www/li/venv/lib/python2.7/site-packages/flask/sessions.py", line 72, in <genexpr>
return dict((k, _tag(v)) for k, v in iteritems(value))
File "/srv/www/li/venv/lib/python2.7/site-packages/flask/sessions.py", line 80, in _tag
u'base64 encoding your string (String was %r)' % value)
UnexpectedUnicodeError: A byte string with non-ASCII data was passed to the session system which can only store unicode strings. Consider base64 encoding your string (String was 'iB\rOU#\xf7BO\x08^\xa6\xd1)v\xad')flask/app.py 1693行的self.save_session(ctx.session,response)给出的是: flask.sessions.SecureCookieSession({'_id':'iB\rOU#\xf7BO\x08^\xa6\xd1)v\xad','_flashes':('message',‘请登录以访问此页面。’)})
所以,如果我没看错的话,会话会给出一个id,flask会尝试使用unicode (但失败了)。我不知道如何纠正这一点(清空我的浏览器缓存以希望新的会话也没有帮助)。有人能给我一些建议吗?我该怎么做?
致以亲切的问候,
卡斯特
编辑:一些额外的信息。我的设置使用flask、flask_mail、flask.ext.mongoengine和flask.ext.security;我使用安全性: db =flask.ext.mongoengine.MongoEngine(应用程序)和flask-flask.ext.security:MongoEngine= user_datastore用户,角色)MongoEngine=flask.ext.security.Security(应用程序,user_datastore)
编辑:这似乎是一个双重问题:Flask Login: TypeError: decoding Unicode is not supported
(没看过,抱歉)
发布于 2013-06-14 06:43:14
一个临时的解决方法(感谢Kave)正在降级Flask和Werkzeug:
pip install werkzeug==0.8.3
pip install flask==0.9
pip install Flask-Login==0.1.3发布于 2013-06-14 05:27:26
这是目前Flask-Login的一个问题。据我所知,这个问题已经在这个扩展的git版本中修复了。
https://stackoverflow.com/questions/17097258
复制相似问题