Browse Source

🌐 Update translations for zh (update-outdated)

pull/15898/head
github-actions[bot] 3 weeks ago
parent
commit
4d70c72388
  1. 488
      docs/zh/docs/_llm-test.md
  2. 11
      docs/zh/docs/alternatives.md
  3. 14
      docs/zh/docs/async.md
  4. 2
      docs/zh/docs/editor-support.md
  5. 28
      docs/zh/docs/features.md
  6. 32
      docs/zh/docs/index.md
  7. 44
      docs/zh/docs/python-types.md
  8. 2
      docs/zh/docs/virtual-environments.md

488
docs/zh/docs/_llm-test.md

@ -37,7 +37,7 @@
昨天,我的朋友写道:"如果你把 incorrectly 拼对了,你就把它拼错了"。我回答:"没错,但 'incorrectly' 错的不是 '"incorrectly"'"。
/// note
/// note | 注意
LLM 很可能会把这段翻错。我们只关心在重新翻译时它是否能保持修正后的译文。
@ -124,24 +124,24 @@ works(foo="bar") # 这可行 🎉
//// tab | 测试
/// note
Some text
/// note | 注意
一些文本
///
/// note | 技术细节
Some text
一些文本
///
/// tip
Some text
/// tip | 提示
一些文本
///
/// warning
Some text
/// warning | 警告
一些文本
///
/// danger
Some text
/// danger | 危险
一些文本
///
////
@ -213,7 +213,7 @@ Some text
## HTML "dfn" 元素 { #html-dfn-elements }
* <dfn title="配置为以某种方式连接并协同工作的机器组">集群</dfn>
* <dfn title="配置为以某种方式连接并协同工作的一组机器。">集群</dfn>
* <dfn title="一种使用具有多个隐藏层的人工神经网络的机器学习方法,从输入层到输出层构建了完整的内部结构">深度学习</dfn>
## 标题 { #headings }
@ -222,15 +222,15 @@ Some text
### 开发 Web 应用——教程 { #develop-a-webapp-a-tutorial }
Hello.
你好。
### 类型提示与注解 { #type-hints-and-annotations }
Hello again.
再次你好。
### 超类与子类 { #super-and-subclasses }
Hello again.
再次你好。
////
@ -248,241 +248,241 @@ Hello again.
//// tab | 测试
* you
* your
*
* 你的
* e.g.
* etc.
* 例如
*
* `foo` as an `int`
* `bar` as a `str`
* `baz` as a `list`
* 作为 `int``foo`
* 作为 `str``bar`
* 作为 `list``baz`
* the Tutorial - User guide
* the Advanced User Guide
* the SQLModel docs
* the API docs
* the automatic docs
* 教程 - 用户指南
* 高级用户指南
* SQLModel 文档
* API 文档
* 自动文档
* Data Science
* Deep Learning
* Machine Learning
* Dependency Injection
* HTTP Basic authentication
* 数据科学
* 深度学习
* 机器学习
* 依赖注入
* HTTP Basic 认证
* HTTP Digest
* ISO format
* the JSON Schema standard
* the JSON schema
* the schema definition
* Password Flow
* Mobile
* deprecated
* designed
* invalid
* on the fly
* standard
* default
* case-sensitive
* case-insensitive
* to serve the application
* to serve the page
* the app
* the application
* the request
* the response
* the error response
* the path operation
* the path operation decorator
* the path operation function
* the body
* the request body
* the response body
* the JSON body
* the form body
* the file body
* the function body
* the parameter
* the body parameter
* the path parameter
* the query parameter
* the cookie parameter
* the header parameter
* the form parameter
* the function parameter
* the event
* the startup event
* the startup of the server
* the shutdown event
* the lifespan event
* the handler
* the event handler
* the exception handler
* to handle
* the model
* the Pydantic model
* the data model
* the database model
* the form model
* the model object
* the class
* the base class
* the parent class
* the subclass
* the child class
* the sibling class
* the class method
* the header
* the headers
* the authorization header
* the `Authorization` header
* the forwarded header
* the dependency injection system
* the dependency
* the dependable
* the dependant
* I/O bound
* CPU bound
* concurrency
* parallelism
* multiprocessing
* the env var
* the environment variable
* the `PATH`
* the `PATH` variable
* the authentication
* the authentication provider
* the authorization
* the authorization form
* the authorization provider
* the user authenticates
* the system authenticates the user
* the CLI
* the command line interface
* the server
* the client
* the cloud provider
* the cloud service
* the development
* the development stages
* the dict
* the dictionary
* the enumeration
* the enum
* the enum member
* the encoder
* the decoder
* to encode
* to decode
* the exception
* to raise
* the expression
* the statement
* the frontend
* the backend
* the GitHub discussion
* the GitHub issue
* the performance
* the performance optimization
* the return type
* the return value
* the security
* the security scheme
* the task
* the background task
* the task function
* the template
* the template engine
* the type annotation
* the type hint
* the server worker
* the Uvicorn worker
* the Gunicorn Worker
* the worker process
* the worker class
* the workload
* the deployment
* to deploy
* the SDK
* the software development kit
* the `APIRouter`
* the `requirements.txt`
* the Bearer Token
* the breaking change
* the bug
* the button
* the callable
* the code
* the commit
* the context manager
* the coroutine
* the database session
* the disk
* the domain
* the engine
* the fake X
* the HTTP GET method
* the item
* the library
* the lifespan
* the lock
* the middleware
* the mobile application
* the module
* the mounting
* the network
* the origin
* the override
* the payload
* the processor
* the property
* the proxy
* the pull request
* the query
* the RAM
* the remote machine
* the status code
* the string
* the tag
* the web framework
* the wildcard
* to return
* to validate
* ISO 格式
* JSON Schema 标准
* JSON schema
* schema 定义
* 密码流
* 移动端
* 已弃用
* 设计的
* 无效
* 动态地
* 标准
* 默认
* 区分大小写
* 不区分大小写
* 为应用提供服务
* 为页面提供服务
* 应用
* 应用程序
* 请求
* 响应
* 错误响应
* 路径操作
* 路径操作装饰器
* 路径操作函数
* 请求体
* 请求体
* 响应体
* JSON 请求体
* 表单体
* 文件体
* 函数体
* 参数
* 请求体参数
* 路径参数
* 查询参数
* Cookie 参数
* Header 参数
* 表单参数
* 函数参数
* 事件
* 启动事件
* 服务器启动
* 关闭事件
* lifespan 事件
* 处理器
* 事件处理器
* 异常处理器
* 处理
* 模型
* Pydantic 模型
* 数据模型
* 数据库模型
* 表单模型
* 模型对象
*
* 基类
* 父类
* 子类
* 子类
* 兄弟类
* 类方法
* Header
* Headers
* 授权 Header
* `Authorization` header
* 转发 Header
* 依赖注入系统
* 依赖项
* 可依赖项
* 依赖方
* I/O 密集型
* CPU 密集型
* 并发
* 并行
* 多进程
* 环境变量
* 环境变量
* `PATH`
* `PATH` 变量
* 认证
* 认证提供方
* 授权
* 授权表单
* 授权提供方
* 用户进行认证
* 系统对用户进行认证
* CLI
* 命令行界面
* 服务器
* 客户端
* 云服务提供商
* 云服务
* 开发
* 开发阶段
* dict
* 字典
* 枚举
* 枚举
* 枚举成员
* 编码器
* 解码器
* 编码
* 解码
* 异常
* 抛出
* 表达式
* 语句
* 前端
* 后端
* GitHub 讨论
* GitHub issue
* 性能
* 性能优化
* 返回类型
* 返回值
* 安全
* 安全方案
* 任务
* 后台任务
* 任务函数
* 模板
* 模板引擎
* 类型注解
* 类型提示
* 服务器 worker
* Uvicorn worker
* Gunicorn Worker
* worker 进程
* worker 类
* 工作负载
* 部署
* 部署
* SDK
* 软件开发工具包
* `APIRouter`
* `requirements.txt`
* Bearer Token
* 破坏性变更
* bug
* 按钮
* 可调用对象
* 代码
* 提交
* 上下文管理器
* 协程
* 数据库会话
* 磁盘
* 域名
* 引擎
* 虚假 X
* HTTP GET 方法
*
*
* 生命周期
*
* 中间件
* 移动应用
* 模块
* 挂载
* 网络
*
* 覆盖
* 载荷
* 处理器
* 属性
* 代理
* Pull Request
* 查询
* RAM
* 远程机器
* 状态码
* 字符串
* 标签
* Web 框架
* 通配符
* 返回
* 校验
////

11
docs/zh/docs/alternatives.md

@ -28,7 +28,7 @@ Django REST framework 作为一个灵活工具箱而创建,用于在底层使
它被包括 Mozilla、Red Hat、Eventbrite 在内的许多公司使用。
它是最早的“自动 API 文档”的范例之一,这正是启发“寻找” **FastAPI** 的最初想法之一。
它是最早的**自动 API 文档**的范例之一,这正是启发“寻找” **FastAPI** 的最初想法之一。
/// note | 注意
@ -58,8 +58,9 @@ Flask 是一个“微框架”,它不包含数据库集成,也没有像 Djan
/// tip | 启发 **FastAPI**
- 成为微框架,便于按需组合所需的工具与组件。
- 提供简单易用的路由系统。
成为微框架。让按需组合所需的工具与组件变得容易。
提供简单易用的路由系统。
///
@ -87,7 +88,7 @@ Requests 设计非常简单直观,易于使用,且有合理的默认值。
response = requests.get("http://example.com/some/url")
```
对应地,FastAPI 的 API 路径操作可能看起来是这样的:
对应地,FastAPI 的 API *路径操作*可能看起来是这样的:
```Python hl_lines="1"
@app.get("/some/url")
@ -282,7 +283,7 @@ Flask-apispec 由与 Marshmallow 相同的开发者创建。
Falcon 是另一个高性能 Python 框架,它被设计为精简且可作为 Hug 等其他框架的基础。
它设计为接收两个参数的函数:一个“request”和一个“response”。然后从 request 中“读取”,向 response 中“写入”。由于这种设计,无法用标准的 Python 类型提示将请求参数和请求体声明为函数形参。
它设计为接收两个参数的函数:一个“请求”和一个“响应”。然后从请求中“读取”,向响应中“写入”。由于这种设计,无法用标准的 Python 类型提示将请求参数和请求体声明为函数形参。
因此,数据校验、序列化与文档要么需要手写完成,无法自动化;要么需要在 Falcon 之上实现一个框架,例如 Hug。其他受 Falcon 设计启发、采用“一个 request 对象 + 一个 response 对象作为参数”的框架也有同样的区别。

14
docs/zh/docs/async.md

@ -95,11 +95,11 @@ Python 的现代版本支持通过一种叫**“协程”**——使用 `async`
### 并发与汉堡 { #concurrency-and-burgers }
上述异步代码的思想有时也被称为“并发”,它不同于“并行”。
上述**异步**代码的思想有时也被称为**“并发”**,它不同于**“并行”**
并发和并行都与“不同的事情或多或少同时发生”有关。
**并发****并行**都与“不同的事情或多或少同时发生”有关。
但是并发和并行之间的细节是完全不同的。
但是*并发**并行*之间的细节是完全不同的。
要了解差异,请想象以下关于汉堡的故事:
@ -367,7 +367,7 @@ Starlette(和 **FastAPI**)是基于 [AnyIO](https://anyio.readthedocs.io/en/
特别是,你可以直接使用 [AnyIO](https://anyio.readthedocs.io/en/stable/) 来处理高级的并发用例,这些用例需要在自己的代码中使用更高级的模式。
即使你没有使用 **FastAPI**,你也可以使用 [AnyIO](https://anyio.readthedocs.io/en/stable/) 编写自己的异步程序,使其拥有较高的兼容性并获得一些好处(例如,结构化并发)。
即使你没有使用 FastAPI,你也可以使用 [AnyIO](https://anyio.readthedocs.io/en/stable/) 编写自己的异步程序,使其拥有较高的兼容性并获得一些好处(例如,结构化并发)。
我基于 AnyIO 新建了一个库,作为一个轻量级的封装层,用来优化类型注解,同时提供了更好的**自动补全**、**内联错误提示**等功能。这个库还附带了一个友好的入门指南和教程,能帮助你**理解**并编写**自己的异步代码**:[Asyncer](https://asyncer.tiangolo.com/)。如果你有**结合使用异步代码和常规**(阻塞/同步)代码的需求,这个库会特别有用。
@ -429,13 +429,13 @@ Starlette(和 **FastAPI**)是基于 [AnyIO](https://anyio.readthedocs.io/en/
你可以拥有多个相互依赖的依赖以及[子依赖](tutorial/dependencies/sub-dependencies.md)(作为函数的参数),它们中的一些可能是通过 `async def` 声明,也可能是通过 `def` 声明。它们仍然可以正常工作,这些通过 `def` 声明的函数将会在外部线程中调用(来自线程池),而不是“被等待”。
### 其他函数 { #other-utility-functions }
### 其他工具函数 { #other-utility-functions }
你可直接调用通过 `def``async def` 创建的任何其他函数,FastAPI 不会影响你调用它们的方式。
你可直接调用通过 `def``async def` 创建的任何其他工具函数,FastAPI 不会影响你调用它们的方式。
这与 FastAPI 为你调用*路径操作函数*和依赖项的逻辑相反。
如果你的函数是通过 `def` 声明的,它将被直接调用(在代码中编写的地方),而不会在线程池中;如果这个函数通过 `async def` 声明,当在代码中调用时,你就应该使用 `await` 等待函数的结果。
如果你的工具函数是通过 `def` 声明的,它将被直接调用(在代码中编写的地方),而不会在线程池中;如果这个函数通过 `async def` 声明,当在代码中调用时,你就应该使用 `await` 等待函数的结果。
---

2
docs/zh/docs/editor-support.md

@ -14,7 +14,7 @@
## 功能 { #features }
- **Path Operation 资源管理器** - 侧边栏树状视图展示应用中的所有 <dfn title="路由,端点">*路径操作*</dfn>。点击可跳转至任一路由或 APIRouter 的定义。
- **Path Operation 资源管理器** - 侧边栏树状视图展示应用中的所有 <dfn title="路由,端点">*路径操作*</dfn>。点击可跳转至任一路由或 router 的定义。
- **路由搜索** - 使用 <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>E</kbd>(macOS 上为 <kbd>Cmd</kbd> + <kbd>Shift</kbd> + <kbd>E</kbd>)按路径、方法或名称进行搜索。
- **CodeLens 导航** - 测试客户端调用(例如 `client.get('/items')`)上方的可点击链接,可跳转到匹配的*路径操作*,在测试与实现之间快速往返。
- **部署到 FastAPI Cloud** - 一键将你的应用部署到 [FastAPI Cloud](https://fastapicloud.com/)。

28
docs/zh/docs/features.md

@ -19,11 +19,11 @@
![Swagger UI interaction](https://fastapi.tiangolo.com/img/index/index-03-swagger-02.png)
* 另外的 API 文档:[**ReDoc**](https://github.com/Rebilly/ReDoc)
* 另外的 API 文档:[**ReDoc**](https://github.com/Rebilly/ReDoc)
![ReDoc](https://fastapi.tiangolo.com/img/index/index-06-redoc-02.png)
### 更主流的 Python { #just-modern-python }
### 就是现代 Python { #just-modern-python }
全部都基于标准的 **Python 类型** 声明(感谢 Pydantic)。没有新的语法需要学习。只需要标准的现代 Python。
@ -98,7 +98,7 @@ my_second_user: User = User(**second_user_data)
### 简洁 { #short }
任何类型都有合理的**默认值**,任何地方都有可选配置。所有的参数被微调,来满足你的需求,定义成你需要的 API。
任何类型都有合理的**默认值**,任何地方都有可选配置。所有的参数被微调,来满足你的需求,定义成你需要的 API。
但是默认情况下,一切都能**“顺利工作”**。
@ -110,7 +110,7 @@ my_second_user: User = User(**second_user_data)
* 字符串 (`str`) 字段,定义最小或最大长度。
* 数字 (`int`, `float`) 有最大值和最小值,等等。
* 校验外来类型,比如:
* 校验更特殊的类型,比如:
* URL。
* Email。
* UUID。
@ -120,9 +120,9 @@ my_second_user: User = User(**second_user_data)
### 安全性及身份验证 { #security-and-authentication }
集成了安全性和身份认证。杜绝数据库或者数据模型的渗透风险
集成了安全性和身份验证。不需要在数据库或数据模型上作出任何妥协
OpenAPI 中定义的安全模式,包括:
OpenAPI 中定义的所有安全模式,包括:
* HTTP 基本认证。
* **OAuth2**(也使用 **JWT tokens**)。在 [使用 JWT 的 OAuth2](tutorial/security/oauth2-jwt.md) 查看教程。
@ -131,7 +131,7 @@ OpenAPI 中定义的安全模式,包括:
* 查询参数。
* Cookies,等等。
加上来自 Starlette(包括 **session cookie**)的所有安全特性。
加上来自 Starlette(包括 **session cookies**)的所有安全特性。
所有的这些都是可复用的工具和组件,可以轻松与你的系统,数据仓库,关系型以及 NoSQL 数据库等等集成。
@ -142,7 +142,7 @@ FastAPI 有一个使用非常简单,但是非常强大的<dfn title='也称为
* 甚至依赖也可以有依赖,创建一个层级或者**“图”依赖**。
* 所有**自动化处理**都由框架完成。
* 所有的依赖关系都可以从请求中获取数据,并且**增加了路径操作**约束和自动文档生成。
* 即使是在依赖项中定义的路径操作参数也会**自动验证**。
* 即使是在依赖项中定义的*路径操作*参数也会**自动验证**。
* 支持复杂的用户身份认证系统,**数据库连接**等等。
* **不依赖**数据库,前端等。但是和它们集成很简单。
@ -155,12 +155,14 @@ FastAPI 有一个使用非常简单,但是非常强大的<dfn title='也称为
### 测试 { #tested }
* 100% <dfn title="自动测试的代码量">测试覆盖</dfn>
* 代码库100% <dfn title="Python 类型注解,有了这个你的编辑器和外部工具可以给你更好的支持">类型注</dfn>
* 代码库100% <dfn title="Python 类型注解,有了这个你的编辑器和外部工具可以给你更好的支持">类型</dfn>
* 用于生产应用。
## Starlette 特性 { #starlette-features }
**FastAPI** 和 [**Starlette**](https://www.starlette.dev/) 完全兼容(并基于)。所以,你有的其他的 Starlette 代码也能正常工作。`FastAPI` 实际上是 `Starlette` 的一个子类。所以,如果你已经知道或者使用 Starlette,大部分的功能会以相同的方式工作。
**FastAPI** 与 [**Starlette**](https://www.starlette.dev/) 完全兼容(并基于它构建)。所以,你有的其他的 Starlette 代码也能正常工作。
`FastAPI` 实际上是 `Starlette` 的一个子类。所以,如果你已经知道或者使用 Starlette,大部分的功能会以相同的方式工作。
通过 **FastAPI** 你可以获得所有 **Starlette** 的特性(FastAPI 就像加强版的 Starlette):
@ -172,11 +174,11 @@ FastAPI 有一个使用非常简单,但是非常强大的<dfn title='也称为
* **CORS**、GZip、静态文件、流响应。
* 支持 **Session 和 Cookie**
* 100% 测试覆盖率。
* 代码库 100% 类型注
* 代码库 100% 类型注。
## Pydantic 特性 { #pydantic-features }
**FastAPI** [**Pydantic**](https://docs.pydantic.dev/) 完全兼容(并基于)。所以,你有的其他的 Pydantic 代码也能正常工作。
**FastAPI** [**Pydantic**](https://docs.pydantic.dev/) 完全兼容(并基于它构建)。所以,你有的其他的 Pydantic 代码也能正常工作。
兼容包括基于 Pydantic 的外部库,例如用于数据库的 <abbr title="Object-Relational Mapper - 对象关系映射">ORM</abbr>s、<abbr title="Object-Document Mapper - 对象文档映射">ODM</abbr>s。
@ -188,7 +190,7 @@ FastAPI 有一个使用非常简单,但是非常强大的<dfn title='也称为
* **不烧脑**
* 没有新的模式定义 micro-language 需要学习。
* 如果你知道 Python types,你就知道如何使用 Pydantic。
* 如果你知道 Python 类型,你就知道如何使用 Pydantic。
* 和你 **<abbr title="Integrated Development Environment - 集成开发环境: 类似于代码编辑器">IDE</abbr>/<dfn title="一个检查代码错误的程序">linter</dfn>/brain** 适配:
* 因为 pydantic 数据结构仅仅是你定义的类的实例;自动补全,linting,mypy 以及你的直觉应该可以和你验证的数据一起正常工作。
* 验证**复杂结构**:

32
docs/zh/docs/index.md

@ -106,19 +106,19 @@ FastAPI 是一个用于构建 API 的现代、快速(高性能)的 Web 框
<div class="fastapi-opinions__panel" id="fo-panel-microsoft" role="tabpanel" aria-labelledby="fo-tab-microsoft" tabindex="0">
<blockquote class="fastapi-opinions__quote">“我最近大量使用 <strong>FastAPI</strong>。我实际上计划把它用于我团队在 <strong>微软的机器学习(ML)服务</strong>。其中一些正在集成进核心 <strong>Windows</strong> 产品以及一些 <strong>Office</strong> 产品。”</blockquote>
<div class="fastapi-opinions__attr">— Kabir Khan,<strong>Microsoft</strong> <a href="https://github.com/fastapi/fastapi/pull/26">(ref)</a></div>
<div class="fastapi-opinions__attr">— Kabir Khan,<strong>Microsoft</strong> <a href="https://github.com/fastapi/fastapi/pull/26">(参考)</a></div>
</div>
<div class="fastapi-opinions__panel" id="fo-panel-uber" role="tabpanel" aria-labelledby="fo-tab-uber" tabindex="0" hidden>
<blockquote class="fastapi-opinions__quote">“我们采用了 <strong>FastAPI</strong> 库来启动一个可查询获取<strong>预测结果</strong><strong>REST</strong> 服务器。” <em>[用于 Ludwig]</em></blockquote>
<div class="fastapi-opinions__attr">— Piero Molino,Yaroslav Dudin,Sai Sumanth Miryala,<strong>Uber</strong> <a href="https://eng.uber.com/ludwig-v0-2/">(ref)</a></div>
<div class="fastapi-opinions__attr">— Piero Molino,Yaroslav Dudin,Sai Sumanth Miryala,<strong>Uber</strong> <a href="https://eng.uber.com/ludwig-v0-2/">(参考)</a></div>
</div>
<div class="fastapi-opinions__panel" id="fo-panel-netflix" role="tabpanel" aria-labelledby="fo-tab-netflix" tabindex="0" hidden>
<blockquote class="fastapi-opinions__quote"><strong>Netflix</strong> 很高兴宣布开源我们的<strong>危机管理</strong>编排框架:<strong>Dispatch</strong>!” <em>[使用 FastAPI 构建]</em></blockquote>
<div class="fastapi-opinions__attr">— Kevin Glisson,Marc Vilanova,Forest Monsen,<strong>Netflix</strong> <a href="https://netflixtechblog.com/introducing-dispatch-da4b8a2a8072">(ref)</a></div>
<div class="fastapi-opinions__attr">— Kevin Glisson,Marc Vilanova,Forest Monsen,<strong>Netflix</strong> <a href="https://netflixtechblog.com/introducing-dispatch-da4b8a2a8072">(参考)</a></div>
</div>
<div class="fastapi-opinions__panel" id="fo-panel-cisco" role="tabpanel" aria-labelledby="fo-tab-cisco" tabindex="0" hidden>
<blockquote class="fastapi-opinions__quote">“如果有人正在构建生产级的 Python API,我强烈推荐 <strong>FastAPI</strong>。它<strong>设计优雅</strong><strong>使用简单</strong><strong>高度可扩展</strong> —— 它已经成为我们 API 优先开发战略中的<strong>关键组件</strong>。”</blockquote>
<div class="fastapi-opinions__attr">— Deon Pillsbury,<strong>Cisco</strong> <a href="https://www.linkedin.com/posts/deonpillsbury_cisco-cx-python-activity-6963242628536487936-trAp/">(ref)</a></div>
<div class="fastapi-opinions__attr">— Deon Pillsbury,<strong>Cisco</strong> <a href="https://www.linkedin.com/posts/deonpillsbury_cisco-cx-python-activity-6963242628536487936-trAp/">(参考)</a></div>
</div>
</div>
<!-- /only-mkdocs -->
@ -127,25 +127,25 @@ FastAPI 是一个用于构建 API 的现代、快速(高性能)的 Web 框
「_[...] 我最近大量使用 **FastAPI**。[...] 我实际上计划把它用于我团队在 **微软的机器学习(ML)服务**。其中一些正在集成进核心 **Windows** 产品以及一些 **Office** 产品。_」
<div style="text-align: right; margin-right: 10%;">Kabir Khan - <strong>Microsoft</strong> <a href="https://github.com/fastapi/fastapi/pull/26"><small>(ref)</small></a></div>
<div style="text-align: right; margin-right: 10%;">Kabir Khan - <strong>Microsoft</strong> <a href="https://github.com/fastapi/fastapi/pull/26"><small>(参考)</small></a></div>
---
「_我们采用 **FastAPI** 库来启动一个可查询以获取**预测结果**的 **REST** 服务器。[用于 Ludwig]_」
<div style="text-align: right; margin-right: 10%;">Piero Molino,Yaroslav Dudin,Sai Sumanth Miryala - <strong>Uber</strong> <a href="https://eng.uber.com/ludwig-v0-2/"><small>(ref)</small></a></div>
<div style="text-align: right; margin-right: 10%;">Piero Molino,Yaroslav Dudin,Sai Sumanth Miryala - <strong>Uber</strong> <a href="https://eng.uber.com/ludwig-v0-2/"><small>(参考)</small></a></div>
---
「_**Netflix** 很高兴宣布开源我们的**危机管理**编排框架:**Dispatch**![使用 **FastAPI** 构建]_」
<div style="text-align: right; margin-right: 10%;">Kevin Glisson,Marc Vilanova,Forest Monsen - <strong>Netflix</strong> <a href="https://netflixtechblog.com/introducing-dispatch-da4b8a2a8072"><small>(ref)</small></a></div>
<div style="text-align: right; margin-right: 10%;">Kevin Glisson,Marc Vilanova,Forest Monsen - <strong>Netflix</strong> <a href="https://netflixtechblog.com/introducing-dispatch-da4b8a2a8072"><small>(参考)</small></a></div>
---
「_如果有人正在构建生产级的 Python API,我强烈推荐 **FastAPI**。它**设计优雅**、**使用简单**且**高度可扩展**,它已经成为我们 API 优先开发战略中的**关键组件**,并驱动了许多自动化和服务,比如我们的 Virtual TAC Engineer。_」
<div style="text-align: right; margin-right: 10%;">Deon Pillsbury - <strong>Cisco</strong> <a href="https://www.linkedin.com/posts/deonpillsbury_cisco-cx-python-activity-6963242628536487936-trAp/"><small>(ref)</small></a></div>
<div style="text-align: right; margin-right: 10%;">Deon Pillsbury - <strong>Cisco</strong> <a href="https://www.linkedin.com/posts/deonpillsbury_cisco-cx-python-activity-6963242628536487936-trAp/"><small>(参考)</small></a></div>
---
@ -192,7 +192,7 @@ $ pip install "fastapi[standard]"
</div>
**Note**: 请确保把 `"fastapi[standard]"` 用引号包起来,以保证在所有终端中都能正常工作。
**注意**: 请确保把 `"fastapi[standard]"` 用引号包起来,以保证在所有终端中都能正常工作。
## 示例 { #example }
@ -237,7 +237,7 @@ async def read_item(item_id: int, q: str | None = None):
return {"item_id": item_id, "q": q}
```
**Note**:
**注意**:
如果你不确定,请查看文档中 _"In a hurry?"_ 章节的 [`async` 和 `await`](https://fastapi.tiangolo.com/zh/async/#in-a-hurry) 部分。
@ -400,7 +400,7 @@ item_id: int
item: Item
```
……通过一次声明,你将获得:
...通过一次声明,你将获得:
* 编辑器支持,包括:
* 自动补全。
@ -421,7 +421,7 @@ item: Item
* `datetime` 对象。
* `UUID` 对象。
* 数据库模型。
* ……以及更多。
* ...以及更多。
* 自动生成的交互式 API 文档,包括两种可选的用户界面:
* Swagger UI。
* ReDoc。
@ -457,19 +457,19 @@ item: Item
return {"item_name": item.name, "item_id": item_id}
```
……从:
...从:
```Python
... "item_name": item.name ...
```
……改为:
...改为:
```Python
... "item_price": item.price ...
```
……看看你的编辑器如何自动补全属性并知道它们的类型:
...看看你的编辑器如何自动补全属性并知道它们的类型:
![editor support](https://fastapi.tiangolo.com/img/vscode-completion.png)
@ -488,7 +488,7 @@ item: Item
* 基于 HTTPX 和 `pytest` 的极其简单的测试
* **CORS**
* **Cookie Sessions**
* ……以及更多。
* ...以及更多。
### 部署你的应用(可选) { #deploy-your-app-optional }

44
docs/zh/docs/python-types.md

@ -2,11 +2,11 @@
Python 支持可选的“类型提示”(也叫“类型注解”)。
这些“类型提示”或注解是一种特殊语法,用来声明变量的<dfn title="例如:str、int、float、bool">类型</dfn>
这些 **“类型提示”** 或注解是一种特殊语法,用来声明变量的<dfn title="例如:str、int、float、bool">类型</dfn>
通过为变量声明类型,编辑器和工具可以为你提供更好的支持。
这只是一个关于 Python 类型提示的快速入门/复习。它只涵盖与 **FastAPI** 一起使用所需的最少部分...实际上非常少。
这只是一个关于 Python 类型提示的**快速入门/复习**。它只涵盖与 **FastAPI** 一起使用所需的最少部分...实际上非常少。
**FastAPI** 完全基于这些类型提示构建,它们带来了许多优势和好处。
@ -44,7 +44,7 @@ John Doe
但现在想象你要从零开始写它。
在某个时刻你开始定义函数,并且准备好了参数……
在某个时刻你开始定义函数,并且准备好了参数...
接下来你需要调用“那个把首字母变大写的方法”。
@ -62,7 +62,7 @@ John Doe
我们来改前一个版本的一行代码。
把函数参数从:
我们会这个片段,也就是函数参数从:
```Python
first_name, last_name
@ -151,7 +151,7 @@ def some_function(data: Any):
有些类型可以在方括号中接收“类型参数”(type parameters),用于声明其内部值的类型。比如“字符串列表”可以写为 `list[str]`
这些能接收类型参数的类型称为“泛型类型”(Generic types)或“泛型”(Generics)。
这些能接收类型参数的类型称为**泛型类型**(Generic types)或**泛型**(Generics)。
你可以把相同的内建类型作为泛型使用(带方括号和内部类型):
@ -221,7 +221,7 @@ def some_function(data: Any):
#### Union { #union }
你可以声明一个变量可以是若干种类型中的任意一种,比如既可以是 `int` 也可以是 `str`
你可以声明一个变量可以是**若干种类型**中的任意一种,比如既可以是 `int` 也可以是 `str`
定义时使用<dfn title='也叫“按位或运算符(bitwise or operator)”,但这里与该含义无关'>竖线(`|`)</dfn>把两种类型分开。
@ -263,9 +263,9 @@ def some_function(data: Any):
<img src="/img/python-types/image06.png">
注意,这表示“`one_person` 是类 `Person` 的一个实例(instance)”。
注意,这表示“`one_person` 是类 `Person` 的一个**实例**(instance)”。
它并不表示“`one_person` 是名为 `Person`类本身(class)”。
它并不表示“`one_person` 是名为 `Person`**类**(class)”。
## Pydantic 模型 { #pydantic-models }
@ -285,7 +285,7 @@ def some_function(data: Any):
/// note | 注意
想了解更多关于 [Pydantic](https://docs.pydantic.dev/) 的信息,请查看其文档
要了解更多关于 [Pydantic 的信息,请查看其文档](https://docs.pydantic.dev/)。
///
@ -295,7 +295,7 @@ def some_function(data: Any):
## 带元数据注解的类型提示 { #type-hints-with-metadata-annotations }
Python 还提供了一个特性,可以使用 `Annotated` 在这些类型提示中放入额外的<dfn title="关于数据的数据,此处指关于类型的信息,例如描述。">元数据</dfn>
Python 还提供了一个特性,可以使用 `Annotated` 在这些类型提示中放入**额外的<dfn title="关于数据的数据,此处指关于类型的信息,例如描述。">元数据</dfn>**
你可以从 `typing` 导入 `Annotated`
@ -305,15 +305,15 @@ Python 本身不会对这个 `Annotated` 做任何处理。对于编辑器和其
但你可以在 `Annotated` 中为 **FastAPI** 提供额外的元数据,来描述你希望应用如何行为。
重要的是要记住:传给 `Annotated` 的第一个类型参数才是实际类型。其余的只是给其他工具用的元数据。
重要的是要记住:传给 `Annotated`**第一个*类型参数***才是**实际类型**。其余的只是给其他工具用的元数据。
现在你只需要知道 `Annotated` 的存在,并且它是标准 Python。😎
稍后你会看到它有多么强大。
稍后你会看到它有多么**强大**
/// tip | 提示
这是标准 Python,这意味着你仍然可以在编辑器里获得尽可能好的开发体验,并能和你用来分析、重构代码的工具良好协作等。✨
这是**标准 Python**,这意味着你仍然可以在编辑器里获得**尽可能好的开发体验**,并能和你用来分析、重构代码的工具良好协作等。✨
同时你的代码也能与许多其他 Python 工具和库高度兼容。🚀
@ -325,16 +325,16 @@ Python 本身不会对这个 `Annotated` 做任何处理。对于编辑器和其
**FastAPI** 中,用类型提示来声明参数,你将获得:
* 编辑器支持。
* 类型检查。
* **编辑器支持**
* **类型检查**
……并且 **FastAPI** 会使用相同的声明来:
...并且 **FastAPI** 会使用相同的声明来:
* 定义要求:从请求路径参数、查询参数、请求头、请求体、依赖等。
* 转换数据:把请求中的数据转换为所需类型。
* 校验数据:对于每个请求:
* 当数据无效时,自动生成错误信息返回给客户端。
* 使用 OpenAPI 记录 API:
* **定义要求**:从请求路径参数、查询参数、请求头、请求体、依赖等。
* **转换数据**:把请求中的数据转换为所需类型。
* **校验数据**:对于每个请求:
* 当数据无效时,自动生成返回给客户端的**错误**
* 使用 OpenAPI **记录** API:
* 然后用于自动生成交互式文档界面。
这些听起来可能有点抽象。别担心。你会在[教程 - 用户指南](tutorial/index.md)中看到所有这些的实际效果。
@ -343,6 +343,6 @@ Python 本身不会对这个 `Annotated` 做任何处理。对于编辑器和其
/// note | 注意
如果你已经读完所有教程,又回来想进一步了解类型,一个不错的资源是 [`mypy` 的“速查表”](https://mypy.readthedocs.io/en/latest/cheat_sheet_py3.html)。
如果你已经读完整个教程,又回来想进一步了解类型,一个不错的资源是 [`mypy` 的“速查表”](https://mypy.readthedocs.io/en/latest/cheat_sheet_py3.html)。
///

2
docs/zh/docs/virtual-environments.md

@ -861,4 +861,4 @@ I solemnly swear 🐺
如果你读过并理解了所有这些,现在**你对虚拟环境的了解比很多开发者都要多**。🤓
在未来当你调看起来复杂的东西时,了解这些细节很可能会有用,你会知道**它是如何在底层工作的**。😎
在未来当你调看起来复杂的东西时,了解这些细节很可能会有用,你会知道**它是如何在底层工作的**。😎

Loading…
Cancel
Save