solotony
@solotony
покоряю пик Балмера

Как загружать файлы с именами в UTF-8 в Django Admin?

Столкнулся с проблемой: при загрузке на сервер файлов С русскоязычными именами вылетает ошибка
UnicodeEncodeError at /admin/dancerscatalog/dancer/3/change/
'ascii' codec can't encode characters in position 78-84: ordinal not in range(128)

да, на локальной машине под виндоуз все работает

Как исправить ? Куда копать ?

UnicodeEncodeError at /admin/dancerscatalog/dancer/3/change/
'ascii' codec can't encode characters in position 78-84: ordinal not in range(128)
Request Method:	POST
Request URL:	http://firesonu.beget.tech/admin/dancerscatalog/dancer/3/change/
Django Version:	2.0.6
Exception Type:	UnicodeEncodeError
Exception Value:	
'ascii' codec can't encode characters in position 78-84: ordinal not in range(128)
Exception Location:	/home/f/firesonu/.local/lib/python3.4/genericpath.py in exists, line 19
Python Executable:	/home/f/firesonu/.local/bin/python3
Python Version:	3.4.3
Python Path:	
['/home/f/firesonu/firesonu.beget.tech/firepalace',
 '/home/f/firesonu/.local/lib/python3.4/site-packages',
 '/home/f/firesonu/firesonu.beget.tech',
 '/opt/passenger40/helper-scripts',
 '/home/f/firesonu/.local/lib/python34.zip',
 '/home/f/firesonu/.local/lib/python3.4',
 '/home/f/firesonu/.local/lib/python3.4/plat-linux',
 '/home/f/firesonu/.local/lib/python3.4/lib-dynload',
 '/home/f/firesonu/.local/lib/python3.4/site-packages']


5b2e8a1a936fd899523143.png5b2e8b45ce274109791434.png
  • Вопрос задан
  • 199 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
Такого не должно возникать и лучше всё-таки выяснить первопричину, но возможен и костыль:

from os.path import splitext
from transliterate import slugify

def slugify_upload(instance, filename):
    name, ext = splitext(filename)
    return slugify(name) + ext


class Dancer(models.Model):
    photo = models.ImageFiled(upload_to=slugify_upload, ...)
    ...

Библиотека.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы