首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何扩展pydantic对象并更改某些文件的类型?

要扩展pydantic对象并更改某些字段的类型,可以按照以下步骤进行操作:

  1. 导入所需的模块和类:
代码语言:txt
复制
from pydantic import BaseModel
from typing import List
  1. 创建一个继承自BaseModel的自定义类,用于定义要扩展的对象:
代码语言:txt
复制
class MyModel(BaseModel):
    field1: str
    field2: int
    field3: List[float]
  1. 如果需要更改某些字段的类型,可以在自定义类中重新定义这些字段,并使用相应的类型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 如果需要更改某些字段的类型,可以在自定义类中重新定义这些字段,并使用相应的类型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str
  1. 在自定义类中可以添加额外的字段,以扩展原始模型:
代码语言:txt
复制
class MyExtendedModel(MyModel):
    field2: float
    field4: bool
    field5: str

以上是如何扩展pydantic对象并更改某些字段的类型的步骤。在实际应用中,可以根据具体需求进行相应的修改和扩展。关于pydantic的更多信息和使用方法,可以参考腾讯云的相关产品文档:pydantic产品介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何在Linux使用 chattr 命令更改文件或目录的扩展属性?

在 Linux 操作系统中,chattr 命令用于更改文件或目录的扩展属性,包括可写性、可执行性和删除性等。本文将介绍 chattr 命令的使用方法以及常见的参数。...图片1. chattr 命令的基本语法chattr 命令的基本语法如下:chattr [选项] [文件或目录]选项包括:-R:递归地更改文件或目录的属性。-v:显示命令执行的详细信息。...常见的属性包括:a:仅允许附加操作,不允许删除或截断文件。i:设置文件为不可修改。d:设置文件为无法删除。u:设置文件为可恢复的。...3. chattr 命令的使用示例示例 1:设置文件为不可修改我们可以使用 chattr 命令将一个文件设置为不可修改的。...总结本文介绍了 chattr 命令的使用方法及常见参数。我们可以使用 chattr 命令更改文件或目录的扩展属性,包括可写性、可执行性和删除性等。常见的属性包括 a、i、d 和 u 等。

3.8K20

Centos8中如何更改文件夹中多个文件的扩展名

方法一:使用循环 在目录中递归更改文件扩展名的最常见方法是使用 shell 的 for 循环。我们可以使用 shell 脚本提示用户输入目标目录、旧的扩展名和新的扩展名以进行重命名。...$new_ext" done; 上面的脚本将询问用户要处理的目录,然后 cd 进入设置目录。接下来,我们得到没有点.的旧扩展名。最后,我们获得了新的扩展名来重命名文件。...然后使用循环将旧的扩展名更改为新的扩展名。 其中${file%.$old_ext}.....txt,如下操作: 方法二:使用rename命令 如果不想使用脚本,可以使用rename工具递归更改文件扩展名。...: [root@localhost test]# rename .log .txt *.log 总结 本教程讨论了如何将文件从特定扩展名更改为另一个扩展名的快速方法。

4K00
  • Centos8中如何更改文件夹中多个文件的扩展名

    方法一:使用循环 在目录中递归更改文件扩展名的最常见方法是使用 shell 的 for 循环。我们可以使用 shell  提示用户输入目标目录、旧的扩展名和新的扩展名以进行重命名。...$new_ext" done; image.png 上面的脚本将询问用户要处理的目录,然后 cd 进入设置目录。接下来,我们得到没有点 .的旧扩展名。最后,我们获得了新的扩展名来重命名文件。...然后使用循环将旧的扩展名更改为新的扩展名。 其中 ${file%.$old_ext}.....txt,如下操作: image.png 方法二:使用rename 如果不想使用脚本,可以使用 rename工具递归更改文件扩展名。....txt扩展名也同样的操作: [root@localhost test]# rename .log .txt *.log image.png 总结 本教程讨论了如何将文件从特定扩展名更改为另一个扩展名的快速方法

    3.3K00

    Centos8中如何更改文件夹中多个文件的扩展名

    方法一:使用循环 在目录中递归更改文件扩展名的最常见方法是使用 shell 的 for 循环。我们可以使用 shell 脚本提示用户输入目标目录、旧的扩展名和新的扩展名以进行重命名。...$new_ext" done; 上面的脚本将询问用户要处理的目录,然后 cd 进入设置目录。接下来,我们得到没有点.的旧扩展名。最后,我们获得了新的扩展名来重命名文件。...然后使用循环将旧的扩展名更改为新的扩展名。 其中${file%.$old_ext}.....txt,如下操作: 方法二:使用rename命令 如果不想使用脚本,可以使用rename工具递归更改文件扩展名。...: [root@localhost test]# rename .log .txt *.log 总结 本教程讨论了如何将文件从特定扩展名更改为另一个扩展名的快速方法。

    3.7K20

    pydantic学习与使用-2.基本模型(BaseModel)使用

    前言 在 pydantic 中定义对象的主要方法是通过模型(模型继承 BaseModel )。 pydantic主要是一个解析库,而不是验证库。...验证是达到目的的一种手段:建立一个符合所提供的类型和约束的模型。 换句话说,pydantic保证输出模型的类型和约束,而不是输入数据。...User(BaseModel): id: int name = 'yo yo' 类型name是从默认值(字符串)推断出来的,因此不需要类型注释(但是请注意当某些字段没有类型注释时有关字段顺序的警告...字符串 ‘123’ 已根据字段类型转换为 int. name初始化用户时未设置,因此它具有默认值. 那么如何知道初始化的时候,需要哪些必填字段?...content_type parse_file: 这需要一个文件路径,读取文件并将内容传递给parse_raw. 如果content_type省略,则从文件的扩展名推断。

    6.9K30

    FastAPI(64)- Settings and Environment Variables 配置项和环境变量

    大多数这些设置都是可变的(可以更改),例如数据库 URL,很多可能是敏感数据,比如密码 出于这个原因,通常在应用程序读取的环境变量中提供它们 Pydantic Settings Pydantic 提供了一个很好的实用程序来处理环境变量的设置...从 Pydantic 导入 BaseSettings 并创建一个子类,非常类似于 Pydantic 的 BaseModel 与 Pydantic Model 一样,可以使用类型注释和默认值声明类属性...,Pydantic 将以不区分大小写的方式读取环境变量 因此,仍会为属性 app_name 读取为大写变量 APP_NAME 接下来它将转换和验证数据 因此,当使用该 settings 对象时,将拥有声明的类型的数据...开头的文件是类 Unix 系统(如 Linux 和 macOS)中的隐藏文件 但是 dotenv 文件实际上不必具有那个确切的文件名 Pydantic 支持使用外部库读取这类型的文件 安装第三方库 pip...get_settings() 的任何后续调用,它不会执行 get_settings() 的内部代码并创建新的 Settings 对象,而是返回与第一次调用时返回的相同对象 lru_cache 技术细节

    2.4K30

    python编程 30秒高级私人定制 Response对象

    读完需要 9 分钟 速读仅需 3 分钟 / python 编程 30 秒高级私人定制 Response 对象,十倍扩展效率 / 建议大家可以使用 腾讯云服务器 进行云上测试和验证自己的代码(CDN...在 fastapi 路径操作中,通常直接返回以下数据类型:dict,list,Pydantic 模型,数据库模型以及其他数据类型。...fastapi 通过 jsonable_encoder 函数自动把返回数据转换为 JSON 格式,然后把 JSON 兼容的数据内容传送给 JSONResponse 对象并返回给终端用户。...但在某些情况下,我们需要在路径操作中直接返回 Response 对象,这样我们能有更多的操作灵活性,比如我们上节讲的自定义 Cookie 信息,自定义头信息。...2.3 预定义 responses 与自定义 responses 并行 本小节我们是我们自定义的加强版本,可进行任意的扩展 from typing import Optional from fastapi

    90370

    Python - pydantic 入门介绍与 Models 的简单使用

    settings 管理 pydantic 可以在代码运行时强制执行类型提示,并在数据校验无效时提供友好的错误提示 定义数据应该如何在规范的 python 代码中保存,然后通过 Python 验证它 Pydantic...输出结果 compiled: True Pydantic 注意事项 pydantic 是一个解析库,而不是一个验证库 验证是达到目的一种手段,构建符合所提供的类型和约束的模型 简单来说:pydantic...保证输出模型的类型和约束,而不是输入数据 Models 简介 在 pydantic 中定义对象的主要方法是通过模型(模型是从 BaseModel 继承的类) 所有基于 pydantic 的数据类型本质上都是一个...BaseModel 类 可以将模型视为强类型语言中的类型(比如 Java) 不受信任的数据可以传递给模型,经过解析和验证后,pydantic 保证生成的模型实例的字段将符合定义的字段类型(实例字段类型符合类定义的字段类型...因为默认值是 string 类型,因此不需要类型提示( name : string ) 注意:当某些字段没有类型提示时,需要注意有关字段顺序的警告 声明一个有效实例 user = User(id='123

    2.6K30

    【机器学习】GLM-4V:图片识别多模态大模型(MLLs)初探

    它基于标准的Python类型提示,提供自动的交互式文档和数据验证。...以下是如何使用uvicorn运行一个FastAPI应用的步骤: 假设你有一个名为main.py的文件,其中包含你的FastAPI应用: from fastapi import FastAPI app...main:app --reload 这里的main是你的Python文件名(不包括.py扩展名),app是你的FastAPI实例的变量名。...--reload标志告诉uvicorn在代码更改时自动重新加载应用,这对于开发非常有用。 3.1.3 pydantic Pydantic是一个Python库,用于数据验证和设置管理。...generate_text文本和图像生成:提取query、image_url,基于requests.get获得图片二进制数据,并使用Image和BytesIO将二进制数据转换为Image对象,将Image

    66610

    Sherlock:社交媒体账号搜索工具 | 开源日报 No.111

    支持单个或多个用户搜索 提供 Docker 容器化部署方式 开放源代码并欢迎贡献者参与开发 包含详细测试功能 pydantic/FastUI[2] Stars: 2.3k License: MIT picture...软件包 — 允许您在实现自己的组件时重用 FastUI 机制和类型 @pydantic/fastui-bootstrap npm 软件包 — 使用 Bootstrap 对所有 FastUI 组件进行实现...FastUI 还遵循 RESTful 原则,在后台告诉前台该做什么,实际上与 GraphQL 相反但目标相同——允许后端扩展而无需进行新的前端开发。...支持多种平台和硬件 可扩展性强 提供各种预构建模型 多套跨平台环境下的 API 接口 Luodian/Otter[6] Stars: 3.2k License: MIT 这个项目是一个开源的多模态指令调整模型...yaml 文件等重大变更

    33910

    替代 Intercom 和 Zendesk: 开源的客户互动套件 | 开源日报 No.183

    雾凇拼音提供了一整套开箱即用的完整配置,包括了多个输入方案、词库及其他功能扩展。主要功能包括 melt_eng 英文输入、优化英文输入体验、两分输入法拼字等。...,旨在通过使用 TypeScript 编写的类型安全 pieces 框架进行扩展。...它专门与 openai 的函数调用 api 交互,并且设计得直观易用,同时能够很好地展示如何通过文档来利用它。...可以定义 Pydantic 模型来映射需要提取的数据结构。...使用 openai.ChatCompletion.create 方法发送提示并将数据提取到 Pydantic 对象中 response_model 参数指定要使用于提取操作的 Pydantic 模型 确认所获取到结果是否符合预期值

    28110

    FastAPI(44)- 操作关系型数据库

    )的工具 使用 ORM,通常会创建一个表示 SQL 数据表的类,该类的每个属性都表示一个列,具有名称和类型 小栗子 Pet 类可以表示 SQL 表 pets 并且 Pet 类的每个实例对象代表数据库中的一行数据...例如,对象 orion_cat(Pet 的一个实例)可以具有属性 orion_cat.type,用于列类型,属性的值可以是:猫 项目架构 . └── sql_app ├── __init__....schemas.py 代码 背景 为了避免混淆 SQLAlchemy 模型和 Pydantic 模型之间,将使用文件 models.py 编写 SQLAlchemy 模型和文件 schemas.py...Pydantic 模型读取数据,即使它不是字典,而是 ORM 模型(或任何其他具有属性的任意对象) # 正常情况 id = data["id"] # 还会尝试从对象获取属性 id = data.id...) # 2、将实例对象添加到数据库会话 Session 中 db.add(db_user) # 3、将更改提交到数据库 db.commit() # 4、刷新实例,方便它包含来自数据库的任何新数据,

    2.2K30

    pydantic学习与使用-1.pydantic简介与基础入门

    前言 版本文档:v1.9.0 使用 python 类型注释的数据验证和设置管理。 pydantic在运行时强制执行类型提示,并在数据无效时提供用户友好的错误。...定义数据应该如何在纯粹的、规范的 python 中;并使用 pydantic 对其进行验证。 pydantic 简介 pydantic 主要是一个解析库,而不是验证库。...验证是达到目的的一种手段:建立一个符合所提供的类型和约束的模型。 换句话说,pydantic 保证输出模型的类型和约束,而不是输入数据。 这听起来像是一个深奥的区别,但事实并非如此。...如果您不确定这意味着什么或它可能如何影响您的使用,您应该阅读下面有关数据转换的部分。 虽然验证不是 pydantic 的主要目的,但您可以使用此库进行自定义验证。...friends等属性.在pydantic中定义对象的主要方法是通过模型(模型继承自 BaseModel 的类)。

    3.4K30

    从 Flask 切到 FastAPI 后,起飞了!

    本质上说,FastAPI 使用 Pydantic 进行数据验证,并使用 Starlette 作为工具,使其与 Flask 相比快得惊人,具有与 Node 或 Go 中的高速 Web APIs 相同的性能...Starlette + Uvicorn 提供异步请求能力,这是 Flask 所缺乏的。 有了 Pydantic 以及类型提示,你就可以得到一个具有自动完成功能的良好的编辑体验。...此外,你还可以利用类型提示。这里,我们在运行时告诉 Pydantic, id 是 int 类型的。在开发中,这也可以帮助完成更好的代码完成度。...,在某些时候你会想把类似的视图、模板、静态文件和模型组合在一起,以帮助把应用程序分解成更小的组件。...换句话说,FastAPI 包括许多必要的功能。它还遵循严格的标准,使你的代码可以生产并更容易维护。FastAPI 的文档也非常完善。

    1.3K10

    Python库 Pydantic 的简介、下载、安装、用法详解入门教程

    最近有粉丝问猫哥:“如何用 Pydantic 优雅地校验数据并提升开发效率?” 今天就带大家从入门到精通地全面了解这款库,助力你的 Python 项目更加高效稳定!...它不仅高效而且直观,让开发者轻松处理复杂的数据结构。 Pydantic 的主要功能: 数据校验:自动检查输入数据的类型和格式。 数据转换:自动将数据转换为正确的 Python 类型。...灵活的模型定义:基于 Python 的 dataclass 风格定义数据结构。 强大的错误提示:提供直观的错误信息,便于调试。 如何下载和安装 Pydantic?...随着 Python 生态的不断壮大,像 Pydantic 这样注重 类型安全与高性能 的库将逐步成为主流。...在未来,Pydantic 的应用场景可能会扩展到: 数据库交互层的自动校验。 AI 模型输入输出数据的标准化。 云端服务的数据接口优化。

    19910

    SqlAlchemy 2.0 中文文档(七)

    将整个列声明映射到 Python 类型 中介绍的方法演示了如何使用 PEP 593 的 Annotated 对象将整个 mapped_column() 构造函数打包以供重用。...### 与 Pydantic 等备选数据类提供程序集成 警告 Pydantic 的数据类层与 SQLAlchemy 的类仪器不完全兼容,除非进行额外的内部更改,否则许多功能,如相关集合,可能无法正常工作...声明性混合类型的一个要求是,某些不能轻易复制的构造必须作为可调用对象给出,使用declared_attr装饰器,例如在混合关系示例中: class RefTargetMixin: @declared_attr...将整个列声明映射到 Python 类型 中介绍的方法演示了如何使用 PEP 593 的 Annotated 对象来打包整个 mapped_column() 构造以便重用。...在将整个列声明映射到 Python 类型中介绍的方法说明了如何使用PEP 593 Annotated对象来打包整个mapped_column()结构以供重用。

    53420
    领券