Django: проблемы с обслуживанием статических файлов с именами не ascii - PullRequest
2 голосов
/ 16 декабря 2009

Я переместил свое приложение 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 ]

1 голос
/ 16 декабря 2009

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

0 голосов
/ 02 апреля 2015

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

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. "

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...