Загрузка файлов через форму Django Forms
Поле FileField из библиотеки Django Forms можно привязать к свойству типа BlobProperty объекта хранилища. Ниже описано как это делается:
Модель:
from appengine_django.models import BaseModel from google.appengine.ext import db class AlbumItem(BaseModel): creationDate = db.DateTimeProperty(auto_now_add=True) image = db.BlobProperty(required=True) note = db.StringProperty()
Отображение формы:
class AlbumItemForm(ModelForm):
image = FileField()
note = CharField(widget=Textarea)
class Meta:
model = AlbumItem
exclude = ("creationDate")
def albumentry(request):
if request.POST:
form = AlbumItemForm(request.POST, request.FILES)
if form.is_valid():
albumEntry = form.save()
return HttpResponseRedirect('/showalbumentry/%s' % albumEntry.key())
else:
return render_to_response('albumentry.html', locals())
else:
form = AlbumItemForm()
return render_to_response('albumentry.html', locals())
Содержимое указанного в коде файла шаблона albumentry.html тривиально, мы не будем полностью описывать его. Главное поместите в код формы шаблонную переменную {{form}} и не забудьте выставить атрибут enctype=»multipart/form-data» в теге <form>.
Все работает автоматически – содержимое файла с изображением, загружаемое на сервер, будет помещено в свойство image. Используемый код работает на версиях App Engine SDK 1.1, Django Helper r30 и Django 0.97.