Это прослеживание вопрос Django on Google App Engine: cannot upload imagesПолучение Google App Engine Информация блоб ввиду Джанго
Я получил часть загрузки изображений в GAE Blobstore работает. Вот что я сделал:
В models.py
я создал модель PhotoFeature
:
class PhotoFeature(models.Model):
property = models.ForeignKey(
Property,
related_name = "photo_features"
)
caption = models.CharField(
max_length = 100
)
blob_key = models.CharField(
max_length = 100
)
В admin.py
я создал запись администратора с переопределением для оказания change_form для обеспечения вставки правильного действия к Blobstore URL загрузки:
class PhotoFeatureAdmin(admin.ModelAdmin):
list_display = ("property", "caption")
form = PhotoFeatureForm
def render_change_form(self, request, context, *args, **kwargs):
from google.appengine.ext import blobstore
if kwargs.has_key("add"):
context['blobstore_url'] = blobstore.create_upload_url('/admin/add-photo-feature')
else:
context['blobstore_url'] = blobstore.create_upload_url('/admin/update-photo-feature')
return super(PhotoFeatureAdmin, self).render_change_form(request, context, args, kwargs)
Как я использую стандартный Django, я хочу использовать представление Django для обработки результата один раз GAE обновил Blobstore в смене BlobstoreUploadHandler
. Я создал следующие мнения (в соответствии с методом render_change_form) и обновленный urls.py
:
def add_photo_feature(request):
def update_photo_feature(request):
Это все работает хорошо, но как только я получаю в метод просмотра я немного потерял. Как получить ключ Blob от объекта запроса, чтобы сохранить его с помощью PhotoFeature? Я использую стандартный Django, а не Django non-rel. Я нашел this вопрос, но, похоже, не содержит решения. Я также осмотрел объект request
, который попадает в представление, но не может найти ничего, связанного с ключом blob.
EDIT:
Объект запроса Django содержит словарь FILES, который даст мне экземпляр InMemoryUploadedFile
. Я полагаю, что-то я должен быть в состоянии получить ключ блоб от этого ...
EDIT 2:
Просто чтобы быть ясно: загруженное фото появится в Blobstore; эта часть работает. Это просто возвращает ключ от Blobstore, который здесь отсутствует.
EDIT 3:
По предложению Даниила я добавил storage.py из djangoappengine проекта, который содержит предлагаемый обработчик загрузки и добавить его в мой settings.py. Это приводит к следующему исключению при попытке загрузить:
'BlobstoreFileUploadHandler' object has no attribute 'content_type_extra'
Вы прошли первый учебник по GAE? https://developers.google.com/appengine/docs/python/gettingstartedpython27/ – Lipis
Да. AFAIK не затрагивает проблему, с которой я сталкиваюсь с вышеуказанным вопросом. – Roger
Нет, это не распространяется на то, что вы просите .. но он охватывает некоторые основы, как GAE работает в отношении моделей и какие свойства вы должны использовать! Насколько я понимаю, вы пытаетесь перенести приложение Django в App Engine .. поэтому для этого вам необходимо использовать, например, свойства GAE https://developers.google.com/appengine/docs/python/ndb/ свойства # типы – Lipis