在Flask Admin中创建目录时出现Unicode错误

在Flask Admin中创建目录时出现Unicode错误,unicode,internationalization,flask,flask-admin,Unicode,Internationalization,Flask,Flask Admin,我在FileAdmin模块(包含在Flask的Flask Admin库中)中收到UnicodeDecodeError错误: 每当我创建一个名称中包含非ASCII字符的目录(比如très)时,我都会遇到这个错误 我认为重点是添加UTF-8编码: # -*- coding: utf-8 -*- 但是在哪里(哪些文件?)以及如何在文件管理模块中处理此问题?我对此不清楚 编辑在@Paolocascello请求之后,在错误回溯下方查找 Traceback (most recent call last)

我在
FileAdmin
模块(包含在Flask的
Flask Admin
库中)中收到
UnicodeDecodeError
错误:

每当我创建一个名称中包含非ASCII字符的目录(比如très)时,我都会遇到这个错误

我认为重点是添加UTF-8编码:

# -*- coding: utf-8 -*-
但是在哪里(哪些文件?)以及如何在
文件管理模块中处理此问题?我对此不清楚

编辑在@Paolocascello请求之后,在错误回溯下方查找

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)
回溯(最近一次呼叫上次)
文件“C:\Python27\lib\site packages\flask\app.py”,第1701行,在调用中__
返回self.wsgi_应用程序(环境,启动响应)
wsgi_应用程序中的文件“C:\Python27\lib\site packages\flask\app.py”,第1689行
响应=self.make\u响应(self.handle\u异常(e))
文件“C:\Python27\lib\site packages\flask\app.py”,第1687行,在wsgi_应用程序中
response=self.full\u dispatch\u request()
文件“C:\Python27\lib\site packages\flask\app.py”,第1360行,完整发送请求
rv=自身处理用户异常(e)
文件“C:\Python27\lib\site packages\flask\app.py”,第1358行,完整发送请求
rv=自我分派请求()
文件“C:\Python27\lib\site packages\flask\app.py”,第1344行,在调度请求中
返回self.view_函数[rule.endpoint](**req.view_参数)
文件“C:\Python27\lib\site packages\flask\u admin\base.py”,第59行,在内部
返回f(自身,**kwargs)
文件“C:\Python27\lib\site packages\flask\u admin\base.py”,第59行,在内部
返回f(自身,**kwargs)
文件“C:\Python27\lib\site packages\flask\u admin\contrib\fileadmin.py”,第460行,在索引中
动作确认=动作确认)
文件“C:\Python27\lib\site packages\flask\u admin\base.py”,第247行,在render中
返回渲染模板(模板,**kwargs)
文件“C:\Python27\lib\site packages\flask\templating.py”,第125行,在render\u模板中
上下文(ctx.app)
文件“C:\Python27\lib\site packages\flask\templating.py”,第107行,在_render中
rv=template.render(上下文)
文件“C:\Python27\lib\site packages\jinja2\environment.py”,第969行,在render中
返回self.environment.handle\u异常(exc\u info,True)
文件“C:\Python27\lib\site packages\jinja2\environment.py”,第742行,在句柄\u异常中
重放(exc_类型、exc_值、tb)
顶级模板代码中的第3行文件“C:\Flask\test\templates\admin\File\list.html”
{%import'admin/actions.html'作为actionslib与上下文%}
顶级模板代码中的第1行文件“C:\Flask\test\templates\admin\master.html”
{%extends admin_base_template%}
顶级模板代码中的文件“C:\Flask\test\templates\admin\base.html”,第22行
{%block page_body%}
文件“C:\Flask\test\templates\admin\base.html”,第40行,在块“page\u body”中
{%block body%}{%endblock%}
文件“C:\Flask\test\templates\admin\File\list.html”,第24行,在块“body”中
{%块文件\列表\表%}
文件“C:\Flask\test\templates\admin\File\list.html”,第42行,在“文件列表表”块中
{%block list\行范围为%}
文件“C:\Flask\test\templates\admin\File\list.html”,第51行,在块“列表行”中
{%block list\行\作用域为%}
文件“C:\Flask\test\templates\admin\File\list.html”,第61行,在块“list\u row\u actions”中
文件“C:\Python27\lib\site packages\markupsafe\\u native.py”,第22行,在escape中
返回标记(文本类型)

之所以发生这种情况,是因为Python
os.walkdir
在使用ASCII路径调用时返回ASCII格式的文件名

因此,在初始化FileAdmin时,请确保将基本路径作为unicode字符串传递:

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

最新的Flask Admin有一个固定的路径-FileAdmin将在内部强制使用unicode作为路径。

如果您不提供代码,我们就帮不了您多少。@Shervin:这是
FileAdmin模块
…当然这不是我的代码!请提供完整的回溯。好的,根据@Paolocascello requestBy编辑我的问题顺便说一句,当上传文件名包含非ascii字符时,我遇到了同样的问题。在这种情况下我该怎么办?我犯了一个愚蠢的错误…现在我意识到你的答案也适用于上传文件。谢谢!
admin.add_view(unicode(path), '/files/', name='Files')