flygrounder
@flygrounder
Python/Django

Как избавиться от ошибки при загрузке файлов с русским именем?

Сервер Apache. Когда хочу загрузить файл через форму(или админку), у которого в названии есть русские буквы, то сервер выдаёт 500-ую ошибку. При загрузке файлов без кириллицы, всё нормально.

models.py
class Book(models.Model):
    name = models.CharField(max_length=50, verbose_name='Название')
    author = models.ForeignKey(Author, verbose_name='Автор')
    image = models.ImageField(verbose_name='Изображение')
    short_description = models.TextField(default='', verbose_name='Краткое описание')
    year = models.IntegerField(verbose_name='Год')
    text = models.FileField(verbose_name='Текст книги')
    tags = TaggableManager(verbose_name='Жанр(ы)')

    class Meta:
        verbose_name = 'Книга'
        verbose_name_plural = 'Книги'

    def __str__(self):
        return f"{self.name} {self.year}"


forms.py
class BookForm(forms.ModelForm):
    class Meta:
        model = Book
        fields = ('name', 'image', 'short_description', 'year', 'text', 'tags')
  • Вопрос задан
  • 1089 просмотров
Решения вопроса 1
@JonGalt
Используй библиотеку pytils для транслита

from pytils import translit   

class Book(models.Model):
     
   def get_image_path(self, filename):
           path = ''.join(["pictures/",translit.slugify(filename)])
           return path
       ...
     image = models.ImageField(verbose_name='Изображение', upload_to=get_image_path)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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