在Django中,如何访问forms.py中的文件字段?

在Django中,如何访问forms.py中的文件字段?,django,django-forms,django-file-upload,Django,Django Forms,Django File Upload,我在Django应用程序的forms.py中有这个表单类: class EmailForm(EmailFormWithoutAttachment): attachment = forms.FileField() 我想通过一个干净的函数访问上传到forms.py中的文件进行验证,以验证其名称 def clean_attachment(self): if self.data['attachment'].name == "someFileName.txt": rais

我在Django应用程序的forms.py中有这个表单类:

class EmailForm(EmailFormWithoutAttachment):
    attachment = forms.FileField()
我想通过一个干净的函数访问上传到forms.py中的文件进行验证,以验证其名称

def clean_attachment(self):
    if self.data['attachment'].name == "someFileName.txt":
        raise forms.ValidationError('This file is not allowed.')
    return self.data['attachment']
但是,问题是错误提示“QueryDict”中找不到“attachment”。我正在将request.FILES绑定到提交表单。我还在表单上使用enctype=“multipart/form data”。我想知道在forms.py中访问文件字段数据的正确方法是什么


谢谢。

使用
self.cleaned_data['attachment']
而不是
self.data['attachment']

使用
self.cleaned_data['attachment']
而不是
self.data['attachment']

谢谢你的建议,但是使用self.cleaned_data['attachment']会给我这个错误:“keyrerror at/email/'attachment'”可能是我没有将文件数据传递到表单中吗?我现在不在计算机上,可以在计算机上进行测试,但您可以尝试使用self.cleaned_data.get(‘附件’)并查看结果如何?另外,检查可能的拼写错误!我会尽快在我的另一台计算机上找到更好的答案。另外,你能不能在没有附件的情况下发布
EmailForm的定义?谢谢你的建议,但是使用self.cleaned_data['attachment']会给我这个错误:“keyrerror at/email/'attachment'”可能是我没有将文件数据传递到表单中吗?我现在不在计算机上,可以在计算机上进行测试,但您可以尝试使用self.cleaned_data.get(‘附件’)并查看结果如何?另外,检查可能的拼写错误!我会尽快在我的另一台电脑上找到更好的答案。另外,你能在没有附件的情况下发布
电子邮件表单的定义吗?