我有一个使用 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)
有用吗?如果不是,您会收到什么错误消息?
