Django:使用非ascii名称提供静态文件的问题

时间:2009-12-15 21:11:30

标签: python django

我已经将我的django应用程序从一台服务器移动到另一台服务器,并在其后发现了媒体的奇怪错误:

Traceback (most recent call last):

 File "/usr/lib/python2.5/site-
packages/Django-1.1.1-py2.5.egg/django/core/handlers/base.py", line 92, in get_response
   response = callback(request, *callback_args, **callback_kwargs)

 File "/usr/lib/python2.5/site-packages/Django-1.1.1-py2.5.egg/django/views/static.py", line 51, in serve
   if os.path.isdir(fullpath):

 File "/usr/lib/python2.5/posixpath.py", line 195, in isdir
   st = os.stat(path)

UnicodeEncodeError: 'ascii' codec can't encode characters in position 44-46: ordinal not in range(128)

我试图访问的图像实际上在名称中有西里尔符号,但它在以前的环境中没有出现问题

谢谢, 奥列格

2 个答案:

答案 0 :(得分:1)

首先,没有Django提供静态文件。请参阅:http://docs.djangoproject.com/en/dev/howto/static-files/

答案 1 :(得分:0)

在Django文档中写道,这可能与Apache设置相关(通过here发现)。

https://docs.djangoproject.com/en/1.4/howto/deployment/modpython/#if-you-get-a-unicodeencodeerror

"确保用于启动Apache的环境配置为接受非ASCII文件名。如果未正确配置环境,则在对包含非ASCII字符的文件名调用os.path()等函数时,将触发UnicodeEncodeError异常。

为避免这些问题,用于启动Apache的环境应包含类似于以下内容的设置:

export LANG='en_US.UTF-8'
export LC_ALL='en_US.UTF-8'

请参阅操作系统的文档,了解放置这些配置项的相应语法和位置; / etc / apache2 / envvars是Unix平台上的常见位置。将这些语句添加到您的环境后,重新启动Apache。"

P.S。我目前的托管技术支持非常慢,我也无法访问Apache设置。这就是为什么我现在不得不求助于django静态服务。我的网站访问频率太高,即使我知道它不是最佳选择,我别无选择。