表单验证与MultiValueDictKeyError

2 投票
1 回答
2003 浏览
提问于 2025-04-17 00:42

这是关于Django框架的内容,涉及到HTML表单和views.py脚本。

我有一个表单,上面有多个复选框,用户可以选择他们想要下载的文件,这些文件会打包成一个zip文件。当所有复选框都被选中时,系统会创建一个zip文件并允许下载。但是,如果有一个复选框被取消选择,我就会遇到以下错误:

MultiValueDictKeyError at /qatools/debug/logs/ 在QueryDict中找不到键'logs':

我的验证逻辑是这样的:它会检查复选框是否被选中,并根据选中与否给出0或1的值,这样可以调用一个shell脚本。

    logs = 0
    if request.POST.get & request.POST['logs'] == "on":
        logs = 1

1 个回答

3

这是一个关于HTML表单的常见问题……在使用POST方法提交表单时,如果一个复选框没有被选中,它在提交的数据中根本不会出现,而不是像预期的那样显示为'关闭'。所以你需要检查这个复选框是否存在:

logs = 0
if request.POST.get and 'logs' in request.POST and request.POST['logs'] == "on":
    logs = 1

撰写回答