Хранение Изображений на Механизме Приложения с помощью Django

Если Вам не нужны дополнительные функции List<>, почему не просто придерживаются IQueryable<>?!?!?! Наименьший общий знаменатель является лучшим решением (особенно, когда Вы видите ответ Timothy).

5
задан Henrik Joreteg 24 October 2009 в 03:51
поделиться

2 ответа

После некоторого совета от "hcalves" я понял проблему. Во-первых, версия Django по умолчанию, которая поставляется вместе с App Engine, - это версия 0.96, и с тех пор изменился способ обработки загруженных файлов. Однако для обеспечения совместимости со старыми приложениями вы должны явно указать App Engine использовать Django 1.1 следующим образом:

from google.appengine.dist import use_library
use_library('django', '1.1')

Подробнее об этом можно прочитать в документации движка приложения .

Хорошо, поэтому вот решение:

from google.appengine.api import images

image = request.FILES['large_image'].read()
recipe.large_image = db.Blob(images.resize(image, 480))
recipe.put()

Затем, чтобы снова передать динамические изображения из хранилища данных, создайте обработчик для изображений, подобных этому:

from django.http import HttpResponse, HttpResponseRedirect

def recipe_image(request,key_name):
    recipe = Recipe.get_by_key_name(key_name)

    if recipe.large_image:
        image = recipe.large_image
    else:
        return HttpResponseRedirect("/static/image_not_found.png")

    #build your response
    response = HttpResponse(image)
    # set the content type to png because that's what the Google images api 
    # stores modified images as by default
    response['Content-Type'] = 'image/png'
    # set some reasonable cache headers unless you want the image pulled on every request
    response['Cache-Control'] = 'max-age=7200'
    return response
9
ответ дан 13 December 2019 в 05:37
поделиться

Вы получаете доступ к загруженным данным через request.FILES ['field_name'].

http://docs.djangoproject.com/en/dev/topics/http/file-uploads/


Читая больше о Google Image API, мне кажется, вы должны сделать что-то вроде этого:

from google.appengine.api import images

image = Image(request.FILES['image'].read())
image = image.resize(100, 100)
recipe.large_image = db.Blob(image)
recipe.put()

request.FILES ['image']. Read () должен работать, потому что это должен быть Django Экземпляр UploadedFile .

3
ответ дан 13 December 2019 в 05:37
поделиться
Другие вопросы по тегам:

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