• Home
  • Учебник по ExtJS
  • О сайте
  •  



    Загрузка файлов через форму 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.

    Leave a Reply