diff --git a/docs/zh/docs/tutorial/extra-data-types.md b/docs/zh/docs/tutorial/extra-data-types.md new file mode 100644 index 000000000..191b4e2b6 --- /dev/null +++ b/docs/zh/docs/tutorial/extra-data-types.md @@ -0,0 +1,66 @@ +# 额外数据类型 + +到目前为止,您一直在使用常见的数据类型,如: + +* `int` +* `float` +* `str` +* `bool` + +但是您也可以使用更复杂的数据类型。 + +您仍然会拥有现在已经看到的相同的特性: + +* 很棒的编辑器支持。 +* 传入请求的数据转换。 +* 响应数据转换。 +* 数据验证。 +* 自动补全和文档。 + +## 其他数据类型 + +下面是一些你可以使用的其他数据类型: + +* `UUID`: + * 一种标准的 "通用唯一标识符" ,在许多数据库和系统中用作ID。 + * 在请求和响应中将以 `str` 表示。 +* `datetime.datetime`: + * 一个 Python `datetime.datetime`. + * 在请求和响应中将表示为 ISO 8601 格式的 `str` ,比如: `2008-09-15T15:53:00+05:00`. +* `datetime.date`: + * Python `datetime.date`. + * 在请求和响应中将表示为 ISO 8601 格式的 `str` ,比如: `2008-09-15`. +* `datetime.time`: + * 一个 Python `datetime.time`. + * 在请求和响应中将表示为 ISO 8601 格式的 `str` ,比如: `14:23:55.003`. +* `datetime.timedelta`: + * 一个 Python `datetime.timedelta`. + * 在请求和响应中将表示为 `float` 代表总秒数。 + * Pydantic 也允许将其表示为 "ISO 8601 时间差异编码", <a href="https://pydantic-docs.helpmanual.io/#json-serialisation" class="external-link" target="_blank">查看文档了解更多信息</a>。 +* `frozenset`: + * 在请求和响应中,作为 `set` 对待: + * 在请求中,列表将被读取,消除重复,并将其转换为一个 `set`。 + * 在响应中 `set` 将被转换为 `list` 。 + * 产生的模式将指定那些 `set` 的值是唯一的 (使用 JSON 模式的 `uniqueItems`)。 +* `bytes`: + * 标准的 Python `bytes`。 + * 在请求和相应中被当作 `str` 处理。 + * 生成的模式将指定这个 `str` 是 `binary` "格式"。 +* `Decimal`: + * 标准的 Python `Decimal`。 + * 在请求和相应中被当做 `float` 一样处理。 +* 您可以在这里检查所有有效的pydantic数据类型: <a href="https://pydantic-docs.helpmanual.io/usage/types" class="external-link" target="_blank">Pydantic data types</a>. + +## 例子 + +下面是一个*路径操作*的示例,其中的参数使用了上面的一些类型。 + +```Python hl_lines="1 3 12-16" +{!../../../docs_src/extra_data_types/tutorial001.py!} +``` + +注意,函数内的参数有原生的数据类型,你可以,例如,执行正常的日期操作,如: + +```Python hl_lines="18-19" +{!../../../docs_src/extra_data_types/tutorial001.py!} +``` diff --git a/docs/zh/mkdocs.yml b/docs/zh/mkdocs.yml index 9c50dd010..16c9fd460 100644 --- a/docs/zh/mkdocs.yml +++ b/docs/zh/mkdocs.yml @@ -67,6 +67,7 @@ nav: - tutorial/extra-models.md - tutorial/response-status-code.md - tutorial/schema-extra-example.md + - tutorial/extra-data-types.md - tutorial/cookie-params.md - 安全性: - tutorial/security/get-current-user.md