Skip to main content
 首页 » 编程设计

python之在 GAE ModelForm 中使用 request.FILES

2025年05月04日8jpfss

我有一个使用 djangoforms.ModelForm 的 django 表单。我拥有的必填字段之一是 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"。还有什么我想念的吗?

我能找到的最接近的问题是 Uploading files to App Engine using webapp and Django forms .

在我的例子中,我提前知道字段名称并且可以使用与发布的类似方法。但是,我无法弄清楚或让它发挥作用。

感谢您的帮助!谢谢!

请您参考如下方法:

如果我们根据您提到的其他问题调整答案,则看起来像这样(未测试):

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) 

有用吗?如果不是,您会收到什么错误消息?