"文件上传错误:无效的pstruct,覆盖我的错误信息"

2024-05-15 07:52:00 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我不选择一个文件,只需单击“提交”,我会得到以下结果错误:-在

Invalid pstruct: {'upload': "b'' is not a FieldStorage instance"}

这不是我在deform demo site上得到的行为,如果将其留空会导致更合理的“Required”错误消息。在

使用下面我自己的验证器并不能解决发行日期:在

^{2}$

我可以看到错误被引发了,但是e.render()的输出,其中e是来自form.validateValidationFailure与错误本身不匹配。相关的deform源代码在'小工具.py'其中,_FieldStorage类检查cstruct是否具有file属性,并引发它自己的Invalid异常。在

下面是一个函数,它执行验证调用(bog standard stuff really),它返回呈现的页面。在

def generate_upload_form(request):
    form = deform.Form(upload_schema, buttons=('submit',))
    if getattr(request, 'POST') and 'submit' in request.POST:
        try:
            value_dict = form.validate(request.POST.items())
        except deform.ValidationFailure as e:  # Invalid form
            form = e.render()
        else:  # Successfully validated, now do operation
            upload_form_operation(request, value_dict)
    if isinstance(form, deform.Form):
        form = form.render()
    return form

如果没有monkey修补deform代码库,我如何显示自己的错误消息?在


Tags: form消息ifrequest错误rendervalidatepost
1条回答
网友
1楼 · 发布于 2024-05-15 07:52:00

是否确实正确提交了表单数据?当deform尝试通过duck类型反序列化提交的值时,通常会发生此错误。在

get忽略了一个特别的事项,那就是确保你的HTML表单有额外的enctype定义

 enctype="multipart/form-data"

如果没有这个,表单将以字符串的形式提交文件名,这将失败

相关问题 更多 >