Использование request.FILES в GAE ModelForm - PullRequest
2 голосов
/ 17 сентября 2011

У меня есть форма django, использующая djangoforms.ModelForm.Одним из обязательных полей, которые у меня есть, является FileField.Я пытался выяснить, как передать загруженный файл в форму.

Я пытался использовать что-то вроде:

def post(self):
    form = StudentForm(data=self.request.POST, files=self.request.FILES)

Однако я получаю следующую ошибку:

Traceback (most recent call last):
  File "/<appengine_dir>/google_appengine/google/appengine/ext/webapp/_webapp25.py", line 703, in __call__
    handler.post(*groups)
  File "/<project_dir>/app/handlers/students.py", line 22, in post
    form = StudentForm(data=self.request.POST, files=self.request.FILES)
  File "/<appengine_dir>/google_appengine/lib/webob/webob/__init__.py", line 500, in __getattr__
    raise AttributeError(attr)
AttributeError: FILES

Я специально указал django 1.2, и в моей форме установлено enctype="multipart/form-data".Что-то еще мне не хватает?

Самый близкий вопрос, который я смог найти, был Загрузка файлов в App Engine с использованием форм webapp и Django .

В моем случаезаранее знать имя поля и все будет в порядке, используя метод, который был опубликован.Однако я не смог понять это или заставить его работать.

Ваша помощь приветствуется!Спасибо!

1 Ответ

0 голосов
/ 17 сентября 2011

Если мы адаптируем ответ на другой вопрос, который вы упомянули, это будет выглядеть так (не проверено):

from django.core.files.uploadedfile import SimpleUploadedFile

upload = self.request.params['field_name']
django_files_dict = {'field_name': SimpleUploadedFile(upload.filename,
                                                      upload.file.read())}
form = StudentForm(data=self.request.POST, files=django_files_dict)

Это работает?Если нет, какое сообщение об ошибке вы получаете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...