请求/响应对象 — Werkzeug 文档
来自菜鸟教程
Werkzeug/docs/2.0.x/wrappers
请求/响应对象
请求和响应对象包装 WSGI 环境或来自 WSGI 应用程序的返回值,以便它是另一个 WSGI 应用程序(包装整个应用程序)。
它们是如何工作的
您的 WSGI 应用程序总是传递两个参数。 WSGI“环境”和用于启动响应阶段的 WSGI start_response 函数。 Request
类包装了 environ 以便更容易地访问请求变量(表单数据、请求头等)。
另一方面,Response
是您可以创建的标准 WSGI 应用程序。 Werkzeug 中简单的 hello world 如下所示:
为了让它更有用,你可以用一个函数替换它并做一些处理:
因为这是一项非常常见的任务,Request
对象为此提供了一个帮助程序。 上面的代码可以改写成这样:
application 仍然是一个有效的 WSGI 应用程序,它接受环境和 start_response 可调用。
包装器的可变性和可重用性
Werkzeug 请求和响应对象的实现试图通过尽可能地禁止某些事情来保护您免受常见的陷阱。 这有两个目的:高性能和避免陷阱。
对于请求对象,以下规则适用:
- 请求对象是不可变的。 默认情况下不支持修改,但是如果您需要修改它,您可以将不可变属性替换为可变属性。
- 请求对象可以在同一个线程中共享,但它本身不是线程安全的。 如果您需要从多个线程访问它,请在调用周围使用锁。
- 不可能腌制请求对象。
对于响应对象,以下规则适用:
- 响应对象是可变的
- 响应对象可以在调用 freeze() 后进行腌制或复制。
- 从 Werkzeug 0.6 开始,对多个 WSGI 响应使用相同的响应对象是安全的。
- 可以使用 copy.deepcopy 创建副本。
包装类