我已经将我的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)
我试图访问的图像实际上在名称中有西里尔符号,但它在以前的环境中没有出现问题
谢谢, 奥列格
答案 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静态服务。我的网站访问频率太高,即使我知道它不是最佳选择,我别无选择。