2011-09-17 42 views
2

我有一個使用djangoforms.ModelForm的django表單。我需要的一個領域是FileField。我一直在想如何將上傳的文件傳遞給表單。在GAE中使用request.FILES ModelForm

我一直在嘗試使用類似:

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"集我形成。還有什麼我失蹤?

我能找到的最接近的問題是Uploading files to App Engine using webapp and Django forms

在我的情況下,我事先知道字段名稱,並且可以使用與發佈的類似方法。但是,我無法弄清楚或使其工作。

您的幫助表示感謝!謝謝!

回答

0

如果我們的答案適應你提到的其他問題,那應該是這樣的(未測試):

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) 

是否行得通?如果不是你得到什麼錯誤信息?

+0

感謝您的幫助!我以前嘗試過這樣的事情。這次我收到了一條不同的錯誤消息:http://pastebin.com/BF4gK1e8 –