2013-08-20 2 views
0

Я получаю сообщение об ошибке с UnicodeDecodeErrorFileAdmin модуля (входит в Flask-Admin библиотеке для колбы):ошибка Unicode при создании каталога в Колба-Admin

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position 5: ordinal not in range(128) 

Всякий раз, когда я создаю каталог, который имеет имеет не-ASCII символы в его имя (например, très), я получаю эту ошибку.

Я думаю, дело в том, чтобы добавить кодировку UTF-8:

# -*- coding: utf-8 -*- 

но где (какие файлы?) И как справиться с этим в FileAdmin module? Это мне непонятно.

Редактировать после запроса @PaoloCasciello, найти ниже TRACEBACK ошибки

Traceback (most recent call last) 

File "C:\Python27\lib\site-packages\flask\app.py", line 1701, in __call__ 
return self.wsgi_app(environ, start_response) 
File "C:\Python27\lib\site-packages\flask\app.py", line 1689, in wsgi_app 
response = self.make_response(self.handle_exception(e)) 
File "C:\Python27\lib\site-packages\flask\app.py", line 1687, in wsgi_app 
response = self.full_dispatch_request() 
File "C:\Python27\lib\site-packages\flask\app.py", line 1360, in full_dispatch_request 
rv = self.handle_user_exception(e) 
File "C:\Python27\lib\site-packages\flask\app.py", line 1358, in full_dispatch_request 
rv = self.dispatch_request() 
File "C:\Python27\lib\site-packages\flask\app.py", line 1344, in dispatch_request 
return self.view_functions[rule.endpoint](**req.view_args) 
File "C:\Python27\lib\site-packages\flask_admin\base.py", line 59, in inner 
return f(self, **kwargs) 
File "C:\Python27\lib\site-packages\flask_admin\base.py", line 59, in inner 
return f(self, **kwargs) 
File "C:\Python27\lib\site-packages\flask_admin\contrib\fileadmin.py", line 460, in index 
actions_confirmation=actions_confirmation) 
File "C:\Python27\lib\site-packages\flask_admin\base.py", line 247, in render 
return render_template(template, **kwargs) 
File "C:\Python27\lib\site-packages\flask\templating.py", line 125, in render_template 
context, ctx.app) 
File "C:\Python27\lib\site-packages\flask\templating.py", line 107, in _render 
rv = template.render(context) 
File "C:\Python27\lib\site-packages\jinja2\environment.py", line 969, in render 
return self.environment.handle_exception(exc_info, True) 
File "C:\Python27\lib\site-packages\jinja2\environment.py", line 742, in handle_exception 
reraise(exc_type, exc_value, tb) 
File "C:\Flask\test\templates\admin\file\list.html", line 3, in top-level template code  
{% import 'admin/actions.html' as actionslib with context %} 
File "C:\Flask\test\templates\admin\master.html", line 1, in top-level template code 
{% extends admin_base_template %} 
File "C:\Flask\test\templates\admin\base.html", line 22, in top-level template code 
{% block page_body %} 
File "C:\Flask\test\templates\admin\base.html", line 40, in block "page_body" 
{% block body %}{% endblock %} 
File "C:\Flask\test\templates\admin\file\list.html", line 24, in block "body" 
{% block file_list_table %} 
File "C:\Flask\test\templates\admin\file\list.html", line 42, in block "file_list_table" 
{% block list_row scoped %} 
File "C:\Flask\test\templates\admin\file\list.html", line 51, in block "list_row" 
{% block list_row_actions scoped %} 
File "C:\Flask\test\templates\admin\file\list.html", line 61, in block "list_row_actions" 
<input type="hidden" name="path" value="{{ path }}"></input> 
File "C:\Python27\lib\site-packages\markupsafe\_native.py", line 22, in escape 
return Markup(text_type(s) 
+0

Если вы не предоставили свой код, мы не сможем вам помочь. – Shervin

+0

@Shervin: это модуль «FileAdmin» [код] (http://flask-admin.readthedocs.org/en/latest/_modules/flask/ext/admin/contrib/fileadmin/) .... Конечно это не мой код! – mannaia

+0

, пожалуйста, предоставьте полную трассу. –

ответ

1

Это происходит потому, что Python os.walkdir возвращает имена файлов в ASCII при вызове с пути ASCii.

Таким образом, при инициализации FileAdmin, убедитесь, что вы передаете базовый путь, юникод строки ::

admin.add_view(unicode(path), '/files/', name='Files') 

Последней Колба-Admin имеет этот фиксированный - FileAdmin заставит Юникод для пути внутренне.

+0

ОК, который работает благодаря большому количеству! – mannaia

+0

Кстати, у меня такая же проблема при загрузке файлов, чье имя содержит символы не ascii. Что мне делать в этом случае? – mannaia

+0

Я делал глупую ошибку ... теперь я понимаю, что ваш ответ работает и на загрузку файлов. Благодаря ! – mannaia

 Смежные вопросы

  • Нет связанных вопросов^_^