HTTP 实用程序 — Werkzeug 文档
来自菜鸟教程
Werkzeug/docs/1.0.x/http
HTTP 实用程序
Werkzeug 提供了几个函数来解析和生成 HTTP 标头,这些功能在实现 WSGI 中间件或在较低级别上操作时非常有用。 所有这些功能也从请求和响应对象中公开。
日期函数
以下函数简化了在 HTTP 上下文中处理时间的过程。 Werkzeug 在内部使用 offset-naive datetime
对象以 UTC 格式存储时间。 如果您在应用程序中使用时区,请确保在处理值之前将 tzinfo 属性替换为 UTC 时区信息。
标题实用程序
以下实用程序可以很好地处理 HTTP 标头,但不会解析它们。 如果您正在处理条件响应,或者您想要代理任意请求但想要删除不支持 WSGI 的逐跳标头,它们将非常有用。 还有一个函数可以从解析的数据中创建 HTTP 标头字符串。
条件响应助手
对于条件响应,以下函数可能有用:
常数
- werkzeug.http.HTTP_STATUS_CODES
- 状态代码 -> 默认状态消息对的字典。 这被包装器和其他地方使用,其中整数状态代码在整个 Werkzeug 中被扩展为字符串。
表单数据解析
Werkzeug 提供与请求对象分开的表单解析函数,以便您可以从普通的 WSGI 环境访问表单数据。
表单数据解析器当前支持以下格式:
- 应用程序/x-www-form-urlencoded
- 多部分/表单数据
当前不支持嵌套多部分 (Werkzeug 0.9),但任何现代 Web 浏览器都不使用它。
用法示例:
>>> from cStringIO import StringIO
>>> data = '--foo\r\nContent-Disposition: form-data; name="test"\r\n' \
... '\r\nHello World!\r\n--foo--'
>>> environ = {'wsgi.input': StringIO(data), 'CONTENT_LENGTH': str(len(data)),
... 'CONTENT_TYPE': 'multipart/form-data; boundary=foo',
... 'REQUEST_METHOD': 'POST'}
>>> stream, form, files = parse_form_data(environ)
>>> stream.read()
''
>>> form['test']
u'Hello World!'
>>> not files
True
通常,WSGI 环境由 WSGI 网关提供,其中传入数据是其中的一部分。 如果你想为单元测试生成这样的假 WSGI 环境,你可能需要使用 create_environ()
函数或 EnvironBuilder
来代替。