使用django-formset处理文件上传的错误提示与验证问题求助
django-formset处理文件上传的错误提示与验证问题求助
大家好,我现在在用django-formset做一个带文件上传的联系表单,遇到了两个关于文件验证和错误提示的问题,实在搞不定了,来求助一下!
先说明我的技术环境:目前用的是Django 5.2.4、Django CMS 4.1.4,还有django-formset 2.0.1。我的表单代码很简单,就是一个普通的Form类:
class ContactForm(forms.Form): name = fields.CharField(widget=widgets.TextInput(attrs={"placeholder": ""})) email_address = fields.EmailField(widget=widgets.TextInput(attrs={"placeholder": ""})) subject = fields.CharField(widget=widgets.TextInput(attrs={"placeholder": ""})) message = fields.CharField(widget=widgets.Textarea(attrs={"placeholder": "","rows":"5"})) uploaded_file = FileField( label="Image (optional)", widget=UploadedFileInput(attrs={ 'accept': 'image/jpeg,image/png,image/gif', 'max-size': MAX_UPLOAD_SIZE, }), help_text="JPEG, PNG, or GIF. Max file size 5 MB. We accept other formats after initial contact.", required=False, )
问题一:选择无效文件时没有正确显示错误提示
我本来想自定义验证文件上传(先做图片验证,之后还要支持其他类型),但首先遇到的问题是,选了无效文件后完全看不到对应的错误提示:
- 当选择超过大小限制的文件时,页面完全没反应:既不显示“文件太大”这类提示,也不发送POST请求,UI也没有任何更新
- 当选择扩展名不符合要求的文件时,虽然会发送POST请求,UI也会显示选中的文件(还可能生成缩略图),但就是不显示“不允许该文件类型”的错误提示
我了解到文件选择时好像不会处理JSON响应,那有没有其他方式能显示这些错误提示?比如能不能用<meta name="error-messages" type_mismatch="File upload still in progress." pattern_mismatch="This is not a valid file." bad_input="File upload failed.">这个标签来配置?
问题二:提交无效文件时出现错误的矛盾提示
还有个相关问题:当提交带无效文件(比如扩展名不对)的表单时,我总是收到这样的错误:
{"uploaded_file": [{"message": "Please either submit a file or check the clear checkbox, not both.", "code": "contradiction"}]}
看起来是因为文件验证不通过后,这个字段会被清空,从form.cleaned_data里消失,导致触发了这个矛盾错误。我本来想显示“扩展名不正确”这类更有用的提示,但现在文件数据都没了,根本没法做自定义验证。
我主要想找相关的文档,看看这类情况应该怎么处理,总觉得是不是自己漏看了什么配置?有没有大佬能指点一下?
内容来源于stack exchange
相关产品推荐
相关产品推荐

