表单验证与MultiValueDictKeyError
这是关于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