Добавление ImageField к модели вызывает исключение в django

Я уже создал базовую CMS, и мой следующий шаг – добавить функциональность загрузки изображений. Я добавил некоторые строки к моим models.py, и после этого моя модель не проверяет из-за UnicodeDecodeError:


     Необработанное исключение в потоке, начатое 
     Traceback (последний последний вызов):
       Файл «C: \ Python27 \ lib \ site-packages \ django \ utils \ autoreload.py», строка 93, в w
     рэппер
         fn (* args, ** kwargs)
       Файл «C: \ Python27 \ lib \ site-packages \ django \ core \ management \ commands \ runserver.
     py ", строка 101, in inner_run
         self.validate (display_num_errors = True)
       Файл «C: \ Python27 \ lib \ site-packages \ django \ core \ management \ base.py», строка 310,
      в подтверждении
         num_errors = get_validation_errors (s, app)
       Файл "C: \ Python27 \ lib \ site-packages \ django \ core \ management \ validation.py", lin
     e 113, в get_validation_errors
         от django.utils.image import Изображение
       Файл «C: \ Python27 \ lib \ site-packages \ django \ utils \ image.py», строка 154, в 
         Изображение, _imaging, ImageFile = _detect_image_library ()
       Файл «C: \ Python27 \ lib \ site-packages \ django \ utils \ image.py», строка 134, в _dete
     ct_image_library
         «импортировано:% s»)% err
       Файл «C: \ Python27 \ lib \ site-packages \ django \ utils \ functional.py», строка 168, в
     __mod__
         return six.text_type (self)% rhs
     UnicodeDecodeError: кодек ascii не может декодировать байт 0xb3 в позиции 35: порядковый номер
      не в диапазоне (128)

Вот мой model.py код:


     из моделей импорта django.db
     from django.contrib.auth.models import Пользователь

     ...

     класс Photo (models.Model):
         title = models.CharField (max_length = 255)
         upload_path = '/'
         photo = models.ImageField (upload_to = upload_path)
         def __unicode __ (self):
             return self.title

У меня есть Python 2.7.6, Django 1.6.1, MySQL-python-1.2.3.

Кто-нибудь знает, почему возникает исключение?

2 Solutions collect form web for “Добавление ImageField к модели вызывает исключение в django”

Ваша проблема может заключаться в том, что ваш метод unicode на самом деле не возвращает unicode.

Это должно быть что-то вроде

def __unicode__(self): return u'%s' % self.title 

Если вы скажете, что это не исправило вашу ошибку, вы правы. Я просмотрел код django и увидел, что ошибка возникает в другом месте. Тем не менее, ваши методы unicode должны возвращать unicode не что иное.

Теперь об ошибке: он поднимается, когда django пытается импортировать вашу библиотеку изображений. Из того, что я вижу, появляется ошибка при сбое ошибки.

Что вы не можете исправить, но что вы можете сделать, это проверить, установлены ли требуемые библиотеки изображений. Код, который терпит неудачу (и генерирует исходную ошибку):

 import _imaging as PIL_imaging 

Как вы можете это исправить (скорее всего) – удалить PIL с вашего компьютера (если у вас его есть) и установить PILLOW. Если вы прочитаете примечания к выпуску 1.6: https://docs.djangoproject.com/en/dev/releases/1.6/, вы можете видеть, что эта подушка теперь является предпочтительной библиотекой манипулирования изображениями для Django.

Скопируйте со страницы: Pillow теперь является предпочтительной библиотекой манипулирования изображениями для использования с Django. PIL ожидает отмены (поддержка будет удалена в Django 1.8). Для обновления необходимо сначала удалить PIL, а затем установить Pillow.

Идите туда, следуйте инструкциям по удалению PIL и установке PILLOW и повторите попытку.

Редактировать. Вам действительно не нужно удалять / удалять PIL. Удаление этого может вызвать проблемы с такими вещами, как ubuntu, где PIL, по-видимому, необходим для рабочего стола gnome3 …

/Редактировать

Большое спасибо, Одиф Илцаеб! Оно работает!

Инструкция для новичков вроде меня:

1) Перейдите на страницу https://pypi.python.org/pypi/Pillow/2.3.0 и загрузите соответствующую версию подушки

2) К вашим моделям.py add

  импортировать PIL.Image как изображение 

Теперь это должно сработать!

  • Изменение размера и преобразования изображения Django перед загрузкой
  • В чем смысл файлов яиц Python?
  • Как получить доступ к данным, когда form.is_valid () является ложным
  • Обслуживание безопасных страниц Django с помощью HTTPS
  • Как увидеть исключение, сгенерированное в переменной шаблона django?
  • Django - как я могу найти расстояние между двумя точками?
  • Добавление пользовательских полей пользователям django
  • Mongoengine ... запрашивать что-то не в ListField?
  • Python - лучший язык программирования в мире.