# Python 3 Notes
这部分文档特别要求使用 Werkzeug 和 WSGI 的环境为 Python 3。
> 警告
> Werkzeug 的 Python 3 支持目前只是实验性的。所以有问题欢迎反馈以帮助我们来改善它。
### WSGI 环境
Python 3 的 WSGI 环境和 Python 2 有一点不同。如果你使用高级的 API,Werkzeug会帮你隐藏这些区别的大部分。Python 2 和 Pyhton 3 最主要的区别是 Python 2 的WSGI 环境包含字节,而 Python 3 包含一系列不同的编码字符串。
在 Python 3 有两种不同类型的 WSGI 环境:
- unicode 字符串限制到 latin1 值。他们经常用于 HTTP headers 信息和其他一些地方。
- unicode 字符串携带二进制数据,通过 latin1 值来回传递。这在 Werkzeug 通常被成为 “WSGI encoding dance” 。
Werkzeug 给你提供一些函数自动解决这些问题。所以你不需要关心内部的实现。下面的函数和类可以用来读取 WSGI 环境信息:
- [get_current_url()](# "werkzeug.wsgi.get_current_url")
- [get_host()](# "werkzeug.wsgi.get_host")
- [get_script_name()](# "werkzeug.wsgi.get_script_name")
- [get_path_info()](# "werkzeug.wsgi.get_path_info")
- [get_query_string()](# "werkzeug.wsgi.get_query_string")
- [EnvironHeaders()](# "werkzeug.datastructures.EnvironHeaders")
不推荐在 Python 3 中创造和修改 WSGI 环境除非确保能够正确解码。在 Werkzeug 中所有高级 API 接口能正确实现编码和解码。
### URLs
在 Python 3 中 Werkzeug 的 URL 为 unicode 字符串。所有的解析函数一般会提供操作字节码功能。在某些情况,URLs 处理函数允许字符集不改变返回一个字节对象。在内部 Werkzeug 正尽可能统一 URIs 和 IRIs。
### 清理 Request
Python 3 和 PyPy 在上传文件时,需要确保关闭 Request 对象。这要妥善关闭由多重解析创建的临时文件。你可以使用 close() 方法。
除了请求对象还有上下文管理需要关闭,但是上下文管理可以自动关闭。
- 开始
- Werkzeug 文档概览
- 安装
- 过渡到 Werkzeug 1.0
- Werkzeug 教程
- API 标准
- 快速开始
- Python 3 Notes
- 服务和测试
- Debugging Applications
- 在服务器运行 WSGI 应用
- 单元测试
- 参考
- Request / Response Objects
- URL Routing
- WSGI Helpers
- HTTP Utilities
- Data Structures
- Utilities
- Context Locals
- Middlewares
- HTTP Exceptions
- 部署
- CGI
- mod_wsgi (Apache)
- FastCGI
- HTTP Proxying
- 贡献模块
- Atom Syndication
- Sessions
- Secure Cookie
- Cache
- Extra Wrappers
- Iter IO
- Fixers
- WSGI Application Profiler
- Lint Validation Middleware
- 额外说明
- Werkzeug Changelog
- Important Terms
- Unicode
- Dealing with Request Data