欢迎光临
我们一直在努力

鸿蒙 PC使用ohos-pip-autosign激活自动签名工具,安装第三方库validators实现Python数据校验库,内置大量常用格式校验规则

欢迎加入开源鸿蒙PC社区:https://harmonypc.csdn.net/ 欢迎在PC社区平台申请新建项目:https://atomgit.com/OpenHarmonyPCDeveloper AtomGit 仓库地址:https://atomgit.com/OpenHarmonyPCDeveloper/ohos_python_numpy

1. 环境搭建:

本文介绍在鸿蒙 PC+CodeArts IDE 搭建 Python 开发环境。借助鸿蒙专属包管理器 Harmonybrew 安装适配版 Python,搭配 ohos-pip-autosign 自动签名工具,解决系统对动态库的签名限制。通过虚拟环境隔离依赖,以 NumPy 完成安装与脚本测试,成功解决权限报错,搭建出可用的 Python 开发环境。

可以参考以下文章OpenHarmony 鸿蒙 PC + CodeArts IDE 实现 Python开发完整开发环境搭建指南


validators 库完整详解 + 全套实战 Demo
一、validators 是什么

validators 是 Python 轻量级数据校验库,内置大量常用格式校验规则,无需手写正则,一行代码验证邮箱、手机号、URL、IP、身份证、数字、UUID、银行卡、域名等。

核心优势
  • 开箱即用,封装好正则逻辑,不用自己写复杂正则表达式
  • 返回布尔值,判断简单;支持抛出异常模式
  • 覆盖 Web 开发 90% 表单校验场景
  • 无复杂依赖,体积小,配合 Flask/FastAPI/Django 表单校验非常方便
  • 支持自定义校验扩展
  • 主要作用

    后端接收前端参数时做合法性校验:

    • 邮箱、网址、IP、域名格式校验
    • 手机号、身份证、银行卡、邮编身份类校验
    • UUID、数字、区间、文件后缀、哈希值校验
    • 批量校验表单字段,过滤非法请求参数
    二、安装

    pip install validators

    请添加图片描述

    三、基础使用规则

    所有校验函数统一格式:

    import validators

    # 成功返回 True,失败返回 ValidationFailure 对象(布尔判断为False)
    res = validators.email("test@qq.com")
    if res:
    print("格式合法")
    else:
    print("格式错误")

    # 强制抛出异常(校验失败直接报错)
    validators.email("xxx", throw=True)

    完整分场景可运行 Demo

    Demo1:网络类校验(邮箱、URL、IP、域名)

    import validators

    # 1. 邮箱校验
    email_list = ["admin@163.com", "test@qq.com", "bad-email", "123@.com"]
    for mail in email_list:
    ok = validators.email(mail)
    print(f"邮箱 {mail:<20} {'✅合法' if ok else '❌非法'}")

    print("-" * 50)

    # 2. URL 网址校验(支持 http/https)
    url_list = [
    "https://www.baidu.com",
    "http://vuejs.org",
    "ftp://xxx.com", # http/https以外默认不通过
    "www.google.com"
    ]
    for url in url_list:
    ok = validators.url(url)
    print(f"URL {url:<30} {'✅合法' if ok else '❌非法'}")

    print("-" * 50)

    # 3. IP地址(IPv4 / IPv6)
    ip4_list = ["192.168.1.1", "256.0.0.1", "127.0.0.1"]
    for ip in ip4_list:
    ok = validators.ipv4(ip)
    print(f"IPv4 {ip:<15} {'✅合法' if ok else '❌非法'}")

    ip6 = "2001:0db8:85a3:0000:0000:8a2e:0370:7334"
    print(f"IPv6 {ip6}: {'✅合法' if validators.ipv6(ip6) else '❌非法'}")

    print("-" * 50)

    # 4. 域名校验(不带http)
    domain_list = ["baidu.com", "xxx.123", ".com"]
    for d in domain_list:
    ok = validators.domain(d)
    print(f"域名 {d:<15} {'✅合法' if ok else '❌非法'}")

    请添加图片描述

    Demo2:身份&金融类(手机号、身份证、银行卡、邮编)

    import validators

    # 1. 中国大陆手机号
    phone_list = ["13800138000", "19912345678", "1234567890", "138abc"]
    for phone in phone_list:
    ok = validators.mobile_phone(phone)
    print(f"手机号 {phone:<15} {'✅合法' if ok else '❌非法'}")

    print("-" * 50)

    # 2. 身份证(18位)
    id_cards = ["430123199912121234", "123456789", "43012319991212123x"]
    for card in id_cards:
    ok = validators.identity(card)
    print(f"身份证 {card:<20} {'✅合法' if ok else '❌非法'}")

    print("-" * 50)

    # 3. 银行卡号
    bank_cards = ["6222021234567890123", "12345", "622202abc"]
    for card in bank_cards:
    ok = validators.bank_card(card)
    print(f"银行卡 {card:<20} {'✅合法' if ok else '❌非法'}")

    print("-" * 50)

    # 4. 邮政编码
    zip_codes = ["410000", "12345", "1234567"]
    for z in zip_codes:
    ok = validators.zip_code(z)
    print(f"邮编 {z:<10} {'✅合法' if ok else '❌非法'}")

    Demo3:通用格式校验(UUID、数字、区间、哈希)

    import validators

    # 1. UUID v4 校验
    uuid_str = "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
    fake_uuid = "1234-abc"
    print(f"合法UUID: {validators.uuid(uuid_str)}")
    print(f"非法UUID: {validators.uuid(fake_uuid)}")

    print("-" * 50)

    # 2. 纯数字校验(整数)
    num_list = ["12345", "-99", "12.34", "abc123"]
    for n in num_list:
    ok = validators.int(n)
    print(f"整数 {n:<10} {'✅合法' if ok else '❌非法'}")

    # 浮点数
    float_list = ["3.14", "-0.5", "abc"]
    for f in float_list:
    ok = validators.float(f)
    print(f"浮点数 {f:<10} {'✅合法' if ok else '❌非法'}")

    print("-" * 50)

    # 3. 数值区间校验(0~100)
    print("50 在0-100区间:", validators.between(50, min=0, max=100))
    print("150 在0-100区间:", validators.between(150, min=0, max=100))

    print("-" * 50)

    # 4. MD5 / SHA256 哈希校验
    md5_str = "e10adc3949ba59abbe56e057f20f883e"
    sha256_str = "cf80cd8aed482d5d1527d7dc72fceff8493265928437d3f70b244ee0f05bfd3d"
    print("MD5校验:", validators.md5(md5_str))
    print("SHA256校验:", validators.sha256(sha256_str))

    Demo4:表单批量校验工具(后端接口常用封装)

    实际项目接收前端表单,统一批量校验,返回错误信息

    import validators

    def check_form(params: dict) –> tuple[bool, str]:
    """
    批量校验表单
    :param params: 前端参数字典
    :return: (是否通过, 错误提示)
    """

    # 校验邮箱
    if not validators.email(params.get("email", "")):
    return False, "邮箱格式不正确"
    # 手机号
    if not validators.mobile_phone(params.get("phone", "")):
    return False, "手机号格式错误"
    # 年龄 1~120
    age = params.get("age")
    if not validators.int(str(age)) or not validators.between(int(age), 1, 120):
    return False, "年龄必须是1~120的整数"
    # 网址(选填,不为空才校验)
    site = params.get("site", "")
    if site and not validators.url(site):
    return False, "个人主页URL格式错误"
    return True, "校验通过"

    if __name__ == "__main__":
    # 模拟前端正常表单
    form1 = {
    "email": "user@qq.com",
    "phone": "13800138000",
    "age": 25,
    "site": "https://github.com"
    }
    ok, msg = check_form(form1)
    print(f"表单1校验:{ok}, 提示:{msg}")

    # 模拟非法表单
    form2 = {
    "email": "bad-email",
    "phone": "123456",
    "age": 200,
    "site": "xxx"
    }
    ok2, msg2 = check_form(form2)
    print(f"表单2校验:{ok2}, 提示:{msg2}")

    Demo5:throw=True 抛出异常模式(FastAPI/Flask异常捕获)

    适合框架全局异常捕获,校验失败直接抛出 ValidationFailure

    import validators
    from validators import ValidationFailure

    try:
    # 校验失败主动抛异常
    validators.email("invalid-email", throw=True)
    except ValidationFailure as e:
    print("捕获校验异常:", e)
    print("错误信息详情:", e.args)

    四、常用内置校验函数清单
    函数作用
    validators.email(s) 邮箱
    validators.url(s) http/https网址
    validators.domain(s) 域名
    validators.ipv4 / ipv6(s) IP地址
    validators.mobile_phone(s) 中国大陆手机号
    validators.identity(s) 18位身份证
    validators.bank_card(s) 银行卡
    validators.zip_code(s) 6位邮编
    validators.uuid(s) UUID
    validators.int(s) / float(s) 整数/浮点数
    validators.between(num, min, max) 数字区间
    validators.md5 / sha1 / sha256(s) 哈希值
    validators.slug(s) 英文短链接标识
    五、业务使用场景
  • 后端接口参数校验 FastAPI/Flask/Django 接收前端表单,快速过滤非法参数,减少数据库无效查询
  • 用户注册表单校验 邮箱、手机号、身份证、年龄统一校验
  • 后台配置校验 校验后台填写的域名、IP、回调URL、银行卡
  • 文件/哈希校验 校验文件MD5、接口传参UUID格式
  • 数据清洗脚本 批量导入Excel数据时过滤无效手机号、邮箱
  • 六、注意事项
  • 校验空字符串:空字符串默认全部校验失败,选填字段需提前判断非空再校验
  • 数字校验传入字符串:validators.int() 只接收字符串,数字要转str
  • 国内场景:手机号、身份证仅支持中国大陆规则,海外号码不兼容
  • 区分 return False 和 throw=True:
    • 简单判断用默认返回布尔
    • 框架全局异常捕获使用 throw=True
  • 仅做格式校验,不做业务逻辑校验(如手机号是否已注册、邮箱是否存在,需要查库)
  • 赞(0)
    未经允许不得转载:171主机测评 » 鸿蒙 PC使用ohos-pip-autosign激活自动签名工具,安装第三方库validators实现Python数据校验库,内置大量常用格式校验规则
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址