2009-12-15 2 views
2

Я переехал мое Джанго приложение с одного сервера на другой, и заметили странную ошибку со СМИ после него:Джанго: Проблемы с обслуживанием статических файлов с не именами ASCii

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

В чем разница между серверами: ОС, версия python ...? – luc

ответ

1

Прежде всего, не имеет Джанго обслуживать статические файлы. См. Это: http://docs.djangoproject.com/en/dev/howto/static-files/

+3

Давайте рассмотрим проблему. – ashchristopher

+0

@ashchristopher : Проблема может очень хорошо использовать Django для выполнения чего-то, что не подходит для этого. Пусть веб-сервер обслуживает статические файлы, и проблема может исчезнуть. –

+0

Разумно хотеть, чтобы это работало в среде тестового сервера. Особенно это сделать Таблица. Хотя это неплохо, «просто поработайте с ним» – michael

0

В документации по Django написано, что это может быть связано с настройками Apache (обнаружено через here).

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

«Убедитесь, что среда, используемая для запуска Apache настроен на прием имен файлов не-ASCII. Если среда не настроена правильно, вы будете вызывать исключения UnicodeEncodeError при вызове функции, такие как os.path() . на именах файлов, содержащих не-ASCII символы

чтобы избежать этих проблем, в среду, используемую для запуска Apache должен содержать параметры, аналогичные следующим:

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

Обратитесь к документации для вашей операционной системы за соответствующим синтаксисом и местоположением для размещения этих элементов конфигурации;/etc/apache2/envvars - это общее место на платформах Unix. После того, как вы добавили эти утверждения в свою среду, перезапустите Apache. «

PS Мое текущее техническое обслуживание хостинга происходит очень медленно, и у меня нет доступа к настройкам Apache. Поэтому в настоящее время мне приходится прибегать к статическому сервису django. не слишком часто посещается, и у меня нет другого выбора, хотя я знаю, что это не оптимально.

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