如何访问绑定到表单的文件?

时间:2014-06-25 19:54:27

标签: python django forms

我有一个以这种方式绑定到表单的文件: (forms.py)     class UploadFileForm(forms.Form):         wbfile = forms.FileField(label ='Upload workbook',help_text ='请确保文件是.xlsx格式')

现在我可以使用request.FILES ['wbfile']在视图函数中访问它。但我想将此文件发送到模板,然后发送到另一个视图功能。所以我把它绑定到这样的形式:

f = form.fields['wbfile']

现在我想将此文件保存在磁盘中,但如何访问此文件,这就是我正在尝试的内容:

f = form.fields['file'].value()
with open(/tmp/xyz) as destination:
    contents = f.read()
    destination.write(contents)

但是这会抛出错误说:'FileField'对象没有属性'value'。

这就是for.fields [wbfile]显示的内容:

<django.forms.fields.FileField object at 0x7f91ff1c49d0>

因此文件肯定绑定到表单。

如果怀疑太明显,请帮助并原谅我,我是初学者!

1 个答案:

答案 0 :(得分:0)

我认为在Django文档中你需要的每一个想法。

对于FileField:https://docs.djangoproject.com/en/dev/ref/models/fields/#filefield

尝试使用YourFileField.storage和YourFileField.path来访问该文件。

然后使用此文档:https://docs.djangoproject.com/en/dev/ref/files/storage/

您可以使用open在内存中打开文件。我想它可以给出这样的代码:

storage, path = YourFileField.storage, YourFileField.path
File f = storage.open(path)

我真的不明白你接下来要做什么,但是如果你想把文件保存在其他地方,我想你可以使用:

f.save(path) #or something similar, haven't tested any code like this