Python循环实现表单验证时逻辑异常的问题求助
Python循环实现表单验证时逻辑异常的问题求助
我正在尝试更高效地验证表单字段,我觉得思路是对的,但在for循环上遇到了问题,代码如下:
首先我通过字典管理所有字段:
listaCondicion = { "nombre" : {"min":3}, "apellido" : {"min":4}, "cedula" : {"min":7, "query":consulta.verficarCedula, "param":[f"{tipoCedula.value}-{cedula.value}",], "msj":"Esta cedula ya esta ligada a un usuario"}, "numTelefono" : {"min":7, "query":consulta.verficarNumero, "param":[f"{codigoTelefono.value}-{numTelefono.value}",], "msj":"Este numero de telefono ya esta asignado a un usuario"}, "correo" : {"min":3, "query":consulta.verificarCorreo, "param":[f"{correo.value}{tipoCorreo.value}",], "msj":"Este correo ya esta en uso"}, "ubicacion" : {"min":3, "query":consulta.verficarUbicacion, "param":[ubicacion.value,], "msj":"Esta ubicacion ya esta en uso"}, "nivelUser" : {"min":4}, "tipoCorreo" : {"min":4}, "codigoTelefono" : {"min":4} }
然后我用for循环遍历这个字典,并传入里面的值:
todoValido = True print(todoValido) for nombreCampo, config in listaCondicion.items(): if bool(validaciones.validarCampos(page, eval(nombreCampo), config["min"])) == True: print("entro en la validacion de campos") todoValido = False if "query" in config: if bool(validaciones.validarConsultas(page, config["query"], config["param"], config["msj"])) or todoValido == True: todoValido = False print("paso por validacion de la consulta") else: print("no paso nada") print(todoValido) if todoValido == True: print("pasaste a la siguiente seccion del formulario") print()
在界面上看起来似乎正常工作,但我加了一些print来跟踪循环,结果总是这样:
True no paso nada no paso nada paso por consulta no paso nada no paso nada no paso nada False
我不知道该怎么办,它总是忽略第一个条件,而且就算所有字段都验证通过,也不让我进入下一个表单环节。
这是我用来验证的类,可能你需要参考:
class validaciones: #CONDICIONES condicionAlfanum = r"^[0-9A-Za-z]*$" condicionEspacio = r"^[^\s]+$" def validarCampos(page, campo, min): if not campo.value: campo.error_text = mensaje.campoFaltante page.update() return False elif len(campo.value) < min: campo.error_text = mensaje.minimoCaracteres(min) page.update() return False def validarConsultas(page, consulta, parametros, mensaje): if db.consultaConRetorno(consulta, parametros): page.snack_bar = SnackBar(content=Text(mensaje)) page.snack_bar.open = True page.update() return False
希望你能帮我解决,如果能让它正常工作,我就可以把这个方法应用到所有代码中,提前感谢!
备注:内容来源于stack exchange,提问作者Diego Marin
相关产品推荐
相关产品推荐

