我有一个使用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。
在我的情况下,我事先知道字段名称,并且可以使用与发布的类似方法。但是,我无法弄明白或使其发挥作用。
非常感谢您的帮助!谢谢!
答案 0 :(得分: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)
有用吗?如果不是你得到什么错误信息?