You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 10:47:15