Ошибка при загрузке изображений с помощью Django, движка приложения Google - PullRequest
1 голос
/ 09 октября 2011

Я создаю веб-приложение, используя Django для Google App Engine, с библиотекой djangoappengine . Я застрял на загрузке изображений, работающих через интерфейс администратора. Мой models.py это:

class Bio(models.Model):
    name = models.CharField(max_length=25)
    about = models.TextField()
    email = models.TextField()
    pic = models.ImageField(upload_to="img/bios/", null=True, blank=True)

Когда я пытаюсь загрузить изображение в интерфейсе администратора по умолчанию, как локально, так и на веб-сайте appspot, я получаю: «ImportError: Нет модуля с именем Image»

Но! - когда я запускаю manage.py shell, я могу успешно import Image и from PIL import Image, поэтому я не уверен, что мне здесь не хватает. Есть идеи?

Ответы [ 2 ]

2 голосов
/ 07 марта 2012

Django ImageField использует PIL, чтобы проверить, является ли загруженный файл на самом деле изображением.Проблема в том, что PIL изначально не был доступен на сервере AppEngine, поэтому вместо него пришлось использовать API API AppEngine .

В процессе поиска я нашел эту реализацию Виджет ImageField для AppEngine, который использует google.appengine.api.images вместо PIL.

Похоже, AppEngine теперь поддерживает PIL в Python 2.7.Поэтому, если вы разрабатываете приложение Python 2.7 в AppEngine, все, что вам нужно, это включить поддержку PIL на в app.yaml

2 голосов
/ 09 октября 2011

http://www.allbuttonspressed.com/projects/djangoappengine#field-types говорит о том, что ImageField не поддерживается.

Попробуйте загрузить в blobstore (см. http://code.google.com/appengine/docs/python/blobstore/overview.html)., который в основном использует промежуточный обработчик, который сохраняет изображение, возвращая BLOB-объектвместо файла укажите ваш обработчик назначения.

...