【问题标题】:In Django, how can one access file fields in forms.py?在 Django 中,如何访问 forms.py 中的文件字段?
【发布时间】:2011-09-20 19:25:19
【问题描述】:

我的 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”中找不到“附件”。我将 request.FILES 绑定到提交表单。我还在我的表单上使用 enctype="multipart/form-data" 。我想知道在 forms.py 中访问 FileField 数据的正确方法是什么。

谢谢。

【问题讨论】:

    标签: django django-forms django-file-upload


    【解决方案1】:

    使用self.cleaned_data['attachment'] 代替self.data['attachment']

    【讨论】:

    • 感谢您的建议,但使用 self.cleaned_data['attachment'] 给我这个错误:“KeyError at /email/ 'attachment'” 可能是我没有将文件数据传递到表格?
    • 我现在不在可以测试它的计算机上,但是您可以尝试使用 self.cleaned_data.get('attachment') 看看结果如何?另外,检查可能的拼写错误!我会尽快在另一台计算机上获得更好的答案。
    • 你也可以发布EmailFormWithoutAttachment类的定义吗?
    猜你喜欢
    • 2021-07-31
    • 2012-01-28
    • 2020-03-03
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 2022-06-16
    • 2016-06-27
    相关资源
    最近更新 更多