变化¶
版本3.0.0¶
未发布的
版本2.3.8¶
未发布的
版本2.3.7¶
已发布2023-08-14
版本2.3.6¶
已发布2023-06-08
FileStorage.content_length
does not fail if the form data did not provide a value. #2726
版本2.3.5¶
已发布2023-06-07
与Python3.12兼容。 #2704
修复中对无效Base64值的处理
Authorization.from_header
。 #2717调试器转义页标题中的异常消息。 #2719
在绑定时
routing.Map
,长长的Idnaserver_name
带有端口的编码不会失败。 #2700iri_to_uri
shows a deprecation warning instead of an error when passing bytes. #2708在解析HTTP请求标头中的数字时,如
Content-Length
,则只接受ASCII数字,而不接受任何int
和float
接受吧。 #2716
版本2.3.4¶
已发布2023-05-08
Authorization.from_header
andWWWAuthenticate.from_header
detects tokens that end with base64 padding (=
). #2685删除的用法
warnings.catch_warnings
。 #2690移除
max_form_parts
限制标准格式数据分析,仅在用于多部分内容时使用。 #2694Response
will avoid converting theLocation
header in some cases to preserve invalid URL schemes likeitms-services
. #2691
版本2.3.3¶
已发布2023-05-01
版本2.3.2¶
已发布2023-04-28
版本2.3.1¶
已发布2023-04-27
版本2.3.0¶
已发布2023-04-25
放弃对Python3.7的支持。 #2648
删除以前弃用的代码。 #2592
不推荐在需要字符串的位置传递字节,以及
charset
和errors
参数在许多地方。任何经过注释、记录或测试以接受字节的地方都会显示警告。从Python2到3的转换过程中消除了这一构件,从而消除了实例检查和编码周期中的大量开销。一般来说,始终使用UTF-8,现代的HTML、URL和HTTP标准都强烈建议您这样做。 #2602不推荐使用
werkzeug.urls
模块,但uri_to_iri
和iri_to_uri
功能。使用urllib.parse
而是类库。 #2600根据WhatWG URL标准,更新在URL中使用百分比编码时认为安全的字符。 #2601
更新对下载中的Unicode文件名使用百分比编码时认为安全的字符。 #2598
不推荐使用
safe_conversion
的参数iri_to_uri
。这个Location
Header使用与其他任何地方相同的过程转换为IRI。 #2609不推荐使用
werkzeug.wsgi.make_line_iter
和make_chunk_iter
。 #2613将现代打包元数据用于
pyproject.toml
而不是setup.cfg
。 #2574Request.get_json()
will raise a415 Unsupported Media Type
error if theContent-Type
header is notapplication/json
, instead of a generic 400. #2550URL转换器的
part_isolating
默认为False
如果它的regex
包含一个/
。 #2582自定义转换器的正则表达式可以在不中断路由器的情况下具有捕获组。 #2596
重载程序可以提取参数以
python
喜欢-X dev
,并且不需要启发式方法来确定如何重新加载命令。仅在>=3.10的Python上可用。 #2589看门狗重新加载程序会忽略文件打开事件。将WatchDog的最低版本提高到2.3.0。 #2603
使用Unix套接字作为开发服务器时,路径可以以点开始。 #2595
将PBKDF2的默认工作因子增加到600,000次迭代。 #2611
parse_options_header
is 2-3 times faster. It conforms to RFC 9110, some invalid parts that were previously accepted are now ignored. #1628这个
is_filename
参数设置为unquote_header_value
已弃用。 #2614不推荐使用
extra_chars
参数并将字节传递给quote_header_value
vt.的.allow_token
参数设置为dump_header
,而cls
参数并将字节传递给parse_dict_header
。 #2618改进
parse_accept_header
实施。根据以下内容进行解析 RFC 9110 。丢弃无效的项目q
价值观。 #1623quote_header_value
quotes the empty string. #2618dump_options_header
skipsNone
values rather than using a bare key. #2618dump_header
和dump_options_header
如果键以星号结尾,则不会引用值*
。parse_dict_header
will decode values with charsets. #2618重构
Authorization
和WWWAuthenticate
标头数据结构。 #1769 , #2619两个班级都有
type
,parameters
,以及token
属性。这个token
属性支持使用单个不透明令牌而不是key=value
参数,如Bearer
。两个类都不是
dict
尽管它们仍然实现获取、设置和删除auth[key]
和auth.key
语法,以及auth.get(key)
和key in auth
。两个类都有一个
from_header
类方法。parse_authorization_header
和parse_www_authenticate_header
都已被弃用。这些方法
WWWAuthenticate.set_basic
和set_digest
都已被弃用。相反,应该创建一个实例并将其分配给response.www_authenticate
。可以将实例列表分配给
response.www_authenticate
若要设置多个标题值,请执行以下操作。但是,访问该属性仅返回第一个实例。
重构
parse_cookie
和dump_cookie
。 #2637parse_cookie
速度提高了40%,dump_cookie
速度最高可提高60%。将字节传递到
parse_cookie
和dump_cookie
已弃用。这个dump_cookie
charset
参数已弃用。dump_cookie
允许domain
不包含点的值.
,并去掉一个前导圆点。dump_cookie
未设置path="/"
默认情况下不必要的。
-
这个
cookie_jar
属性已弃用。http.cookiejar
不再用于存储。在请求中发送Cookie时使用域和路径匹配。这个
domain
和path
参数默认为localhost
和/
。添加了一个
get_cookie
方法来检查Cookie。曲奇有
decoded_key
和decoded_value
属性来匹配应用程序看到的内容,而不是客户端将看到的编码值。第一个位置
server_name
参数设置为set_cookie
和delete_cookie
已弃用。使用domain
参数,而不是。其他参数
delete_cookie
除此之外,domain
,path
,以及value
都已被弃用。
如果
request.max_content_length
则在访问流时以及一般从流读取时立即进行检查,而不是仅在表单分析期间进行检查。 #1513不得在生产中使用的开发服务器将耗尽高达10 GB或1000个读取的请求流。这允许客户端在以下情况下看到413错误
max_content_length
而不是“连接重置”失败。 #2620开发服务器丢弃包含下划线的标题键
_
,因为它们用破折号模棱两可-
在WSGI中。 #2622secure_filename
looks for more Windows reserved file names. #2623的更新类型批注
best_match
使default
参数更清晰。 #2625多部分解析器正确处理空字段。 #2632
这个
Map
charset
参数和Request.url_charset
属性是不推荐使用的。URL中的百分比编码必须始终表示UTF-8字节。无效字节将保留百分比编码,而不是替换。 #2602这个
Request.charset
,Request.encoding_errors
,Response.charset
,以及Client.charset
属性已弃用。请求和响应数据必须始终使用UTF-8。 #2602的更新类型批注
ProfilerMiddleware
stream
参数。 #2642使用延迟的批注求值。 #2644
开发服务器在将请求记录到终端之前转义已解码URL中的ASCII控制字符。 #2652
这个
FormDataParser
parse_functions
属性和get_parse_func
方法和无效的application/x-url-encoded
内容类型,都已弃用。 #2653generate_password_hash
supports scrypt. Plain hash methods are deprecated, only scrypt and pbkdf2 are supported. #2654
版本2.2.3¶
已发布2023/02/14
确保在缺少尾部斜杠时,使用路径转换器的URL规则将使用严格的斜杠进行重定向。 #2533
类型签名用于
get_json
指定在以下情况下返回类型不是可选项silent=False
。 #2508parse_content_range_header
returnsNone
for a value likebytes */-1
where the length is invalid, instead of raising anAssertionError
. #2531剩余地址
ResourceWarning
与所使用的套接字相关run_simple
。移除prepare_socket
,现在创建服务器时会发生这种情况。 #2421更新以下项的现有标头
multipart/form-data
与测试客户端的请求。 #2549修复对标题扩展参数的处理,使它们不再带引号。 #2529
LimitedStream.read
works correctly when wrapping a stream that may not return the requested size in oneread
call. #2558以开头的Cookie标头
=
被视为空键并被丢弃,而不是剥离前导==
。指定多部分部件的最大数量,默认为1000,之后
RequestEntityTooLarge
分析时引发异常。这缓解了DoS攻击,在这种情况下,大量的表单/文件部分将导致不成比例的资源使用。
版本2.2.2¶
已发布2022-08-08
修复路由器以恢复2.1版
strict_slashes == False
叶请求与分支规则匹配的行为,反之亦然。 #2489修复路由器以识别无效规则,而不是挂起解析它们,并正确解析
/
在转换器参数中。 #2489更新子程序包导入位置
werkzeug.routing
要使用import as
显式重新导出公共属性的语法。 #2493对一些无效标题字符的解析更可靠。 #2494
启动开发服务器时,始终会显示不要在生产部署中使用它的警告。 #2480
LocalProxy.__wrapped__
is always set to the wrapped object when the proxy is unbound, fixing an issue in doctest that would cause it to fail. #2485地址一
ResourceWarning
与所使用的套接字相关run_simple
。 #2421
版本2.2.1¶
已发布2022/07/27
版本2.2.0¶
已发布2022/07/23
已弃用
get_script_name
,get_query_string
,peek_path_info
,pop_path_info
,以及extract_path_info
。 #2461删除以前弃用的代码。 #2461
将MarkupSafe作为依赖项添加,并在呈现HTML时使用它转义值。 #2419
添加了
werkzeug.debug.preserve_context
用于在调试控制台中运行代码时还原请求的上下文本地数据的机制。 #2439通过确保与Python 3.11的兼容性修复
end_lineno
和end_col_offset
出现在AST节点上。 #2425添加基于状态机的新的更快的URL匹配路由器。如果自定义转换器需要与
/
它必须设置类变量part_isolating = False
。 #2433修复了禁用严格斜杠时屏蔽分支路径的分支叶路径。 #1074
AnyConverter
validates the value passed for it when building URLs. #2388调试器在Python3.11中的回溯中显示增强的错误位置。 #2407
添加了SANS-IO
is_resource_modified
和parse_cookie
基于WSGI版本的函数。 #2408添加了SANS-IO
get_content_length
功能。 #2415不要假设测试响应是MIMETYPE。 #2450
类型检查
FileStorage
接受os.PathLike
。 #2418
版本2.1.2¶
已发布2022-04-28
版本2.1.1¶
已发布2022-04-01
ResponseCacheControl.s_maxage
converts its value to an int, likemax_age
. #2364
版本2.1.0¶
已发布2022-03-28
放弃对Python3.6的支持。 #2277
使用GEvent或Eventlet需要greenlet>=1.0或PyPy>=7.3.7。
werkzeug.locals
和contextvars
将不能在旧版本中正常工作。 #2278删除以前弃用的代码。 #2276
剔除非标准
shutdown
在运行开发服务器时从WSGI环境中执行函数。有关替代方案,请参阅文档。请求和响应混合都已合并到
Request
和Response
上课。用户代理解析器和
useragents
模块已移除。这个user_agent
模块提供了一个接口,可以将其子类化以添加解析器,如UA-Parser。默认情况下,它只存储整个字符串。测试客户端返回
TestResponse
实例,不能再将其视为元组。所有数据都作为响应的属性可用。移除
locals.get_ident
和相关的线程本地代码从locals
,当转移到基于上下文变量的实现时,它不再有意义。移除
python -m werkzeug.serving
CLI。这个
has_key
一些映射数据结构上的方法;使用key in data
取而代之的是。Request.disable_data_descriptor
被移除,通过shallow=True
取而代之的是。移除
no_etag
参数来自Response.freeze()
。移除
HTTPException.wrap
类方法。移除
cookie_date
功能。使用http_date
取而代之的是。移除
pbkdf2_hex
,pbkdf2_bin
,以及safe_str_cmp
功能。在以下位置使用等效项hashlib
和hmac
而是模块。移除
Href
班级。移除
HTMLBuilder
班级。移除
invalidate_cached_property
功能。使用del obj.attr
取而代之的是。移除
bind_arguments
和validate_arguments
。使用Signature.bind()
和inspect.signature()
取而代之的是。移除
detect_utf_encoding
,它内置到json.loads
。移除
format_string
,使用string.Template
取而代之的是。移除
escape
和unescape
。改用MarkupSafe。
这个
multiple
的参数parse_options_header
已弃用。 #2357依赖于 PEP 538 和 PEP 540 来处理使用正确的文件系统编码对文件名进行解码。这个
filesystem
模块已移除。 #1760传递给的默认值
Headers
验证方式与稍后添加的值相同。 #1608设置
CacheControl
Int属性,如max_age
会将该值转换为整型。 #2230始终使用
socket.fromfd
重新启动开发服务器时。 #2287将URL值的字典传递给
Map.build
,列表值不会过滤掉None
或者崩溃为一个单一的值。传递一个MultiDict
确实会折叠单个项目。这将撤消以前的更改,该更改使传递列表变得困难,或者None
列表中的值,以自定义URL转换器。 #2249run_simple
shows instructions for dealing with "address already in use" errors, including extra instructions for macOS. #2321优化Stat重新加载程序,以避免在更多情况下查看不必要的文件。出于性能和准确性的考虑,仍建议使用看门狗重新加载器。 #2141
开发服务器使用
Transfer-Encoding: chunked
当配置为使用HTTP/1.1时,用于流响应。 #2090, #1327 , #2091开发服务器使用HTTP/1.1,它在以下情况下启用保活连接和分块的流响应
threaded
或processes
已启用。 #2323cached_property
works for classes with__slots__
if a corresponding_cache_{name}
slot is added. #2332重构调试器回溯格式化程序以使用Python的内置
traceback
模块越多越好。 #1753这个
TestResponse.text
属性是r.get_data(as_text=True)
,以方便针对文本而不是字节进行测试。 #2337safe_join
ensures that the path remains relative if the trusted directory is the empty string. #2349百分比编码的换行符 (
%0a
),由WSGI服务器解码,在路由时考虑,而不是提前终止匹配。 #2350测试客户端不为以下项设置重复的标头
CONTENT_LENGTH
和CONTENT_TYPE
。 #2348append_slash_redirect
handlesPATH_INFO
with internal slashes. #1972, #2338的默认状态代码
append_slash_redirect
是308而不是301。这将保留请求正文,并将先前的更改匹配到strict_slashes
在布线中。 #2351修整
ValueError: I/O operation on closed file.
当遵循多个重定向时,使用测试客户端。 #2353Response.autocorrect_location_header
is disabled by default. TheLocation
header URL will remain relative, and exclude the scheme and domain, by default. #2352Request.get_json()
will raise a 400BadRequest
error if theContent-Type
header is notapplication/json
. This makes a very common source of confusion more visible. #2339
版本2.0.3¶
已发布2022-02-07
ProxyFix
supports IPv6 addresses. #2262类型批注
Response.make_conditional
,HTTPException.get_response
,以及Map.bind_to_environ
接受Request
除了……之外WSGIEnvironment
对于第一个参数。 #2290的FIX类型批注
Request.user_agent_class
。 #2273访问
LocalProxy.__class__
和__doc__
在未绑定的代理上,返回回退值而不是方法对象。 #2188使用测试客户端集进行重定向
RAW_URI
和REQUEST_URI
正确。 #2151
版本2.0.2¶
已发布2021/10/05
在中处理多个令牌
Connection
路由WebSocket请求时的标头。 #2131在HTTPS上设置调试器PIN Cookie安全标志。 #2150
的FIX类型批注
MultiDict.update
接受可迭代值 #2142在以下情况下防止重定向URL的重复编码
merge_slash=True
为Rule.match
。 #2157CombinedMultiDict.to_dict
withflat=False
considers all component dicts when building value lists. #2189send_file
only sets a detectedContent-Encoding
ifas_attachment
is disabled to avoid browsers saving decompressed.tar.gz
files. #2149修复类型批注
TypeConversionDict.get
不返回Optional
如果两者都有,则为值default
和type
不是None
。 #2169固定要接受的传送规则工厂的类型批注
Iterable[RuleFactory]
而不是Iterable[Rule]
对于rules
参数。 #2183添加缺少的类型批注
FileStorage.__getattr__
#2155调试器Pin Cookie设置为
SameSite
设置为Strict
而不是None
与现代浏览器安全兼容。 #2156使用类型批注
IO[bytes]
和IO[str]
而不是BinaryIO
和TextIO
以获得更广泛的类型兼容性。 #2130使用SAN匹配CN生成临时TLS证书。 #2158
修复了使用Python3.6或0.4.17之前的greenlet版本时当地人的内存使用情况。 #2212
中的FIX类型批注
CallbackDict
,因为它没有使用绑定的TypeVar。 #2235修复了在响应上设置CSP标头选项的问题。 #2237
修复了交互式调试器中的一个问题,即在很长的回溯时间内,行在单击时不会展开。 #2239
交互式调试器处理没有回溯的异常的显示,例如来自
ProcessPoolExecutor
。 #2217
版本2.0.1¶
已发布2021-05-17
的FIX类型批注
send_file
max_age
可召回的。不要通过pathlib.Path
至max_age
。 #2119将顶级名称标记为已导出,以便类型检查了解用户项目中的导入。 #2122
修复一些在Python3.6.0中不可用的类型。 #2123
cached_property
is generic over its return type, properties decorated with it report the correct type. #2113修复了边界包含特殊正则表达式字符时的多部分解析错误。 #2125
类型检查理解调用
headers.get
带有字符串的默认设置将始终返回字符串。 #2128如果
HTTPException.description
不是字符串,get_description
会将其转换为字符串。 #2115
版本2.0.0¶
已发布2021-05-11
放弃对Python2和3.5的支持。 #1693
贬低
utils.format_string()
使用string.Template
相反。 #1756贬低
utils.bind_arguments()
和utils.validate_arguments()
使用Signature.bind()
和inspect.signature()
相反。 #1757贬低
utils.HTMLBuilder
. #1761贬低
utils.escape()
和utils.unescape()
,请改用MarkupSafe。 #1758反对无证
python -m werkzeug.serving
CLI。 #1834不推荐使用
environ["werkzeug.server.shutdown"]
运行开发服务器时可用的函数。 #1752不推荐使用
useragents
模块和内置的用户代理解析器。使用专用的解析器库,方法是子类化user_agent.UserAgent
和设置Request.user_agent_class
。 #2078拆下未使用的内部
posixemulation
模块。 #1759全
datetime
值是时区感知的,使用tzinfo=timezone.utc
。这适用于任何使用http.parse_date
:Request.date
,.if_modified_since
,.if_unmodified_since
;Response.date
,.expires
,.last_modified
,.retry_after
;parse_if_range_header
,以及IfRange.date
。在比较值时,还必须知道其他值,否则必须将这些值设置为幼稚。在传递参数或设置属性时,仍假定朴素值为UTC格式。 #2040将所有请求和响应包装器混合代码合并到单个代码中
Request
和Response
上课。不再需要使用Mixin类,并且将显示弃用警告。正在检查isinstance
或issubclass
反对BaseRequest
和BaseResponse
将显示弃用警告并检查Request
或Response
取而代之的是。 #1963如果安装了simplejson,则JSON支持不再使用simplejson。要使用另一个JSON模块,请重写
Request.json_module
和Response.json_module
。 #1766Response.get_json()
no longer caches the result, and thecache
parameter is removed. #1698Response.freeze()
generates anETag
header if one is not set. Theno_etag
parameter (which usually wasn't visible anyway) is no longer used. #1963将空列表作为查询字符串参数传递给
build()
不会附加不必要的?
。还可以删除任意数量的None
列表中的项目。 #1992当通过
Headers
对象到测试客户端方法或EnvironBuilder
,一个键的多个值将合并为一个逗号分隔的值。这与多值头上的HTTP规范相匹配。 #1655设置
Response.status
和status_code
使用相同的解析和错误检查。 #1658 , #1728MethodNotAllowed
andRequestedRangeNotSatisfiable
take aresponse
kwarg, consistent with other HTTP errors. #1748由
Unauthorized
产生一个WWW-Authenticate
中每个值的标题www_authenticate
,而不是将它们合并为一个值,以提高与浏览器和其他客户端的互操作性。 #1755如果
parse_authorization_header
无法解码头值,它返回None
而不是提高UnicodeDecodeError
. #1816调试器不再使用jQuery。 #1807
测试客户机在中包含查询字符串
REQUEST_URI
和RAW_URI
. #1781切换参数顺序
default_stream_factory
以匹配调用时使用的顺序。 #1085添加
send_from_directory
函数安全地为受信任目录中的不可信路径提供服务。改编自Flask的实现。 #1880send_file
takesdownload_name
, which is passed even ifas_attachment=False
by usingContent-Disposition: inline
.download_name
replaces Flask'sattachment_filename
. #1869send_file
setsconditional=True
andmax_age=None
by default.Cache-Control
is set tono-cache
ifmax_age
is not set, otherwisepublic
. This tells browsers to validate conditional requests instead of using a timed cache.max_age=None
replaces Flask'scache_timeout=43200
. #1882send_file
can be called withetag="string"
to set a custom ETag instead of generating one.etag
replaces Flask'sadd_etags
. #1868send_file
sets theContent-Encoding
header if an encoding is returned when guessingmimetype
fromdownload_name
. #3896更新使用的默认值
generate_password_hash
。将pbkdf2迭代次数从260000次增加到150000次。将盐长度从8增加到16。使用secrets
生成盐的模块。 #1935在以下情况下,重新加载程序不会崩溃
sys.stdin
不知何故None
。 #1915将参数添加到
delete_cookie
匹配set_cookie
以及现代浏览器所期望的属性。 #1889utils.cookie_date
is deprecated, useutils.http_date
instead. The value forSet-Cookie expires
is no longer "-" delimited. #2040使用
request.headers
而不是request.environ
若要查找标题属性,请执行以下操作。 #1808这个测试
Client
请求方法 (client.get
等)始终返回TestResponse
。除了正常的行为之外,Response
,这个类提供request
具有产生响应的请求,并且history
要在以下情况下跟踪中间响应,请执行以下操作follow_redirects
是使用的。 #763, #1894这个测试
Client
请求方法需要一个auth
参数来添加Authorization
标题。它可以是一个Authorization
对象或一个(username, password)
的元组Basic
奥特。 #1809叫唤
response.close()
关于测试的反应Client
将关闭请求输入流。这与文件行为相匹配,并且可以防止ResourceWarning
在某些情况下。 #1785EnvironBuilder.from_environ
decodes values encoded for WSGI, to avoid double encoding the new values. #1959默认的statreloader将在非system/viralenv下查看Python文件
sys.path
条目,其中应包含大多数用户代码。它还将监视中给出的目录下的所有Python文件extra_files
。 #1945重新加载程序会忽略
__pycache__
又是目录。 #1945run_simple
takesexclude_patterns
a list offnmatch
patterns that will not be scanned by the reloader. #1333Cookie名称不再是无引号的。这是反对的 RFC 6265 和可能允许的设置
__Secure
添加了前缀的Cookie。 #1965当单词可以是子字符串时,修复用户代理平台的一些单词匹配。 #1923
开发服务器记录忽略的SSL错误。 #1967
表单数据的临时文件在中打开
rb+
而不是wb+
模式,以便更好地与某些库兼容。 #1961在某些测试中,使用SHA-1而不是MD5来生成eTag和调试器引脚。MD5在某些环境中不可用,例如FIPS 140。这可能会使一些缓存无效,因为ETag将不同。 #1897
添加
Cross-Origin-Opener-Policy
和Cross-Origin-Embedder-Policy
响应头属性。 #2008run_simple
tries to show a valid IP address when binding to all addresses, instead of0.0.0.0
or::
. It also warns about not running the development server in production in this case. #1964如果在Windows上安装了Colorama,则会显示开发服务器日志中的颜色。对于所有平台,样式支持不再需要单击。 #1832
对空文件(或长度为0的其他数据)的范围请求将返回带有空文件的200响应,而不是416错误。 #1937
新的SAN-IO基类用于
Request
和Response
已被提取以包含与WSGI或IO无关的所有行为。这些不是公共API,它们是正在进行的让ASGI框架使用Werkzeug的重构的一部分。 #2005解析
multipart/form-data
已经被重构为使用sans-io模式。这也应该会使具有大型二进制文件上载的解析表单的速度大大加快。 #1788, #875LocalProxy
matches the current Python data model special methods, including all r-ops, in-place ops, and async.__class__
is proxied, so the proxy will look like the object in more cases, includingisinstance
. Useissubclass(type(obj), LocalProxy)
to check if an object is actually a proxy. #1754Local
usesContextVar
on Python 3.7+ instead ofthreading.local
. #1778request.values
does not includeform
for GET requests (even though GET bodies are undefined). This prevents bad caching proxies from caching form data instead of query strings. #2037开发服务器将基础套接字添加到
environ
ASwerkzeug.socket
。这是非标准的,并且特定于开发服务器,其他服务器可能会在它们自己的密钥下公开这一点。它对于处理WebSocket升级请求很有用。 #2052URL匹配假定
websocket=True
WebSocket升级请求的模式。 #2052已更新
UserAgentParser
来处理更多的案件。 #1971werzeug.DechunkedInput.readinto
will not read beyond the size of the buffer. #2021修复超过最大内容大小时的连接重置。 #2051
pbkdf2_hex
,pbkdf2_bin
, andsafe_str_cmp
are deprecated.hashlib
andhmac
provide equivalents. #2083invalidate_cached_property
is deprecated. Usedel obj.name
instead. #2084Href
is deprecated. Usewerkzeug.routing
instead. #2085Request.disable_data_descriptor
is deprecated. Create the request withshallow=True
instead. #2085HTTPException.wrap
is deprecated. Create a subclass manually instead. #2085
1.0.1版本¶
发布日期:2020-03-31
版本1.0.0¶
发布日期:2020-02-06
放弃对python 3.4的支持。 (#1478 )
删除在0.15版中发出拒绝警告的代码。 (#1477 )
删除
werkzeug
模块有利于直接进口。例如,而不是import werkzeug; werkzeug.url_quote
做from werkzeug.urls import url_quote
. 首先安装0.16版本,以便在升级时看到不推荐使用的警告。 #2 , #1640补充
utils.invalidate_cached_property()
使缓存的属性无效。 (#1474 )的指令键
Set-Cookie
解析时不忽略响应头Cookie
请求头。这允许名字为“expires”和“version”的cookie。 (#1495 )请求cookie被解析为
MultiDict
用同一个键捕获cookies的所有值。cookies[key]
返回第一个值而不是最后一个值。使用cookies.getlist(key)
获取所有值。parse_cookie
也默认为MultiDict
. #1562 , #1458添加
charset=utf-8
到HTTP异常响应的CONTENT_TYPE
标题。 (#1526 )Mac上Opera 60的用户代理正确报告为“Opera”,而不是“Chrome”。 #1556
Android上的人行横道平台被正确地报告为“Android”,而不是“Chromeos”。 (#1572 )
当当前服务器名称与配置的服务器名称不匹配时发出警告。 #760
如果当前方案匹配,则配置为具有方案默认端口的服务器名称将与不带端口的当前服务器名称匹配。 #1584
InternalServerError
has aoriginal_exception
attribute that frameworks can use to track the original cause of the error. #1590测试头是否与头键大小写无关,以便
X-Foo
是一样的x-foo
. #1605http.dump_cookie()
accepts'None'
as a value forsamesite
. #1549set_cookie()
accepts asamesite
argument. #1705通过 Response.content_security_policy 数据结构。 #1617
LanguageAccept
will fall back to matching "en" for "en-US" or "en-US" for "en" to better support clients or translations that only match at the primary language tag. #450, #1507MIMEAccept
uses MIME parameters for specificity when matching. #458, #1574如果开发服务器是用
SSLContext
配置为验证客户端证书,PEM格式的证书将作为environ["SSL_CLIENT_CERT"]
. #1469is_resource_modified
will run for methods other thanGET
andHEAD
, rather than always returningFalse
. #409SharedDataMiddleware
returns 404 rather than 500 when trying to access a directory instead of a file with the package loader. The dependency on setuptools and pkg_resources is removed. #1599添加
response.cache_control.immutable
旗子。请记住浏览器对此的支持Cache-Control
头选项仍处于试验阶段,可能无法实现。 #1185使用开发服务器突出显示的可选请求日志是通过单击而不是TermColor来处理的。 #1235
开发服务器的可选临时TLS支持由加密技术而不是pyopenssl处理。 #1555
FileStorage.save()
supportspathlib
and PEP 519PathLike
objects. #1653调试器安全pin在Podman管理的容器中是唯一的。 #1661
创建URL时
host_matching
当存在具有不同主机的重复终结点时,启用将考虑当前主机。 #488这个
429 TooManyRequests
和503 ServiceUnavailable
HTTP异常需要retry_after
参数来设置Retry-After
标题。 #1657Map
andRule
have amerge_slashes
option to collapse multiple slashes into one, similar to how many HTTP servers behave. This is enabled by default. #1286, #1694将HTTP 103、208、306、425、506、508和511添加到状态代码列表中。 #1678
添加
update
,setlist
和setlistdefault
方法到Headers
数据结构。extend
方法可以MultiDict
还有夸克。 #1687, #1697开发服务器接受以两个斜杠开头的路径,而不是剥离第一个路径段。 #491
将访问控制(跨源请求共享,CORS)头属性添加到
Request
和Response
包装纸。 #1699Accept
values are no longer ordered alphabetically for equal quality tags. Instead the initial order is preserved. #1686补充
Map.lock_class
替代实现的属性。 #1702支持在路由系统中匹配和构建WebSocket规则,供异步框架使用。 #1709
跨整个文件的范围请求响应为206而不是200,以更符合 RFC 7233 . 这可能有助于为旧版浏览器提供媒体服务。 #410, #1704
这个
SharedDataMiddleware
违约fallback_mimetype
是application/octet-stream
. 如果文件名看起来像文本mimetype,则utf-8
添加了字符集。这与BaseResponse
还有烧瓶的send_file()
. #1689
版本0.16.1¶
发布日期:2020-01-27
版本0.16.0¶
发布日期:2019-09-19
版本0.15.6¶
发布日期:2019-09-04
0.15.5版¶
发布日期:2019-07-17
修复一
TypeError
由于ast.Module
在Python 3.8中。 #1551修复一些Python2.7版本的调试版本中的C断言失败。 #1553
BadRequestKeyError
adds theKeyError
message to the description ife.show_exception
is set toTrue
. This is a more secure default than the original 0.15.0 behavior and makes it easier to control without losing information. #1592将调试器升级到jQuery 3.4.1。 #1581
在一些外部调试器中解决导致重新加载失败的问题。 #1607
解决一个问题,即重新加载程序无法自省安装为egg的setuptools脚本。 #1600
重新装载者将使用
sys.executable
即使脚本被标记为可执行的,也会恢复0.15中引入的用于NixOS的行为。重新装载者不应该再导致OSError: [Errno 8] Exec format error
. #1482 , #1580SharedDataMiddleware
safely handles paths with Windows drive names. #1589
版本0.15.4¶
发布日期:2019-05-14
修复一
SyntaxError
在python 2.7.5上。 (#1544 )
版本0.15.3¶
发布日期:2019-05-14
在Python2.7的开发服务器中正确处理多行头折叠。 (#1080 )
恢复
response
参数Unauthorized
. (#1527 )Unauthorized
不添加WWW-Authenticate
标题ifwww_authenticate
没有给出。 (#1516 )默认的URL转换器将字节正确编码为字符串,而不是用
b''
. (#1502 )在中修复文件名格式字符串
ProfilerMiddleware
正确处理浮点值。 (#1511 )更新
LintMiddleware
使用python 3。 (#1510 )调试器检测链接异常中的循环,在这种情况下不会超时。 (#1536 )
在Docker中运行开发服务器时,调试器的安全性pin现在对于每个容器都是唯一的。
版本0.15.2¶
发布日期:2019-04-02
0.15.1版¶
发布日期:2019-03-21
Unauthorized
拿description
作为第一个参数,恢复以前的行为。新的www_authenticate
参数列在第二个。 (#1483 )
版本0.15.0¶
发布日期:2019-03-19
MapAdapter.build()
可以通过MultiDict
表示一个键的多个值。它在传递带有列表值的dict时已经做到了这一点。 (#724 )path_info
默认为'/'
对于Map.bind()
. (#740 , #768 , #1316 )变化
RequestRedirect
代码从301到308,在重定向期间保留动词和请求体(表单数据)。 (#1342 )int
和float
如果传递signed=True
参数。例如,/jump/<int(signed=True):count>
. (#1355 )Location
自动更正Response.get_wsgi_headers()
相对于当前路径而不是根路径。 (#693 , #718 , #1315 )412响应再次包括实体头和正文中的错误消息。它们最初在实现时被省略
If-Match
(#1233 ,但规范似乎不允许这样做。 (#1231 , #1255 )将删除1xx和204响应的内容长度头段。这修复了以前的更改,其中不会发送任何正文,但头仍然存在。新行为符合RFC7230。 (#1294 )
Unauthorized
采取了www_authenticate
参数来设置WWW-Authenticate
响应的头,这在技术上是有效401响应所必需的。 (#772 , #795 )添加对状态代码424的支持
FailedDependency
. (#1358 )http.parse_cookie()
忽略空段,而不是生成没有键或值的cookie。 (#1245 , #1301 )http.parse_authorization_header
(及Authorization
,authorization
)将授权头视为UTF-8。在Python2上,基本身份验证用户名和密码为unicode
。 (#1325 )parse_options_header()
理解 RFC 2231 参数继续。 (#1417 )uri_to_iri()
不在未保留类(如空格)中取消对ASCII字符的引号,并在解码时保留无效的引用字节。iri_to_uri()
不引用保留字符。参见 RFC 3987 对于这些角色类。 (#1433 )get_content_type
为以结尾的任何mimetype附加一个字符集+xml
不仅仅是那些以application/
.已知的文本类型,如application/javascript
也给出了字符集。 (#1439 )清理
werkzeug.security
模块,删除过时的hashlib支持。 (#1282 )在
generate_password_hash()
,pbkdf2默认使用150000次迭代,从50000次增加。 (#1377 )ClosingIterator
电话close
在包裹的 可迭代的 不是内部迭代器。这不会影响对象__iter__
返回self
.对于其他对象,以前没有调用该方法。 (#1259 , #1260 )FileStorage
查找上的属性stream._file
如果它们不存在于stream
解决一个问题tempfile.SpooledTemporaryFile()
没有实现所有io.IOBase
.请参阅https://github.com/python/cpython/pull/3249。 (#1409 )CombinedMultiDict.copy()
返回一个浅可变副本作为MultiDict
.副本不再反映对组合听写的更改,而是更普遍地有用。 (#1420 )调试器使用的jquery版本更新为3.3.1。 (#1390 )
调试器正确地呈现长
markupsafe.Markup
实例。 (#1393 )当Werkzeug安装为zip文件时,调试器可以提供资源。
DebuggedApplication.get_resource
使用pkgutil.get_data
. (#1401 )调试器和服务器日志支持Python3的链式异常。 (#1396 )
交互式调试器突出显示来自用户代码的帧,以便于在长堆栈跟踪中进行挑选。注意,如果使用virtualenv而不是venv创建env,调试器可能会错误地对某些帧进行分类。 (#1421 )
单击交互式调试器顶部的错误消息将跳到跟踪的底部。 (#1422 )
生成pin时,调试器将忽略
KeyError
当当前uid没有关联的用户名时引发,这可能发生在Docker中。 (#1471 )BadRequestKeyError
添加KeyError
消息的描述,使它更清楚是什么导致了400错误。像flask这样的框架可以在生产中通过设置e.args = ()
. (#1395 )如果一个嵌套
ImportError
发生于import_string()
回溯提到嵌套导入。删除用于处理“父级尚未设置的模块”的未测试代码路径。 (#735 )在使用PDB等工具时触发重新加载将不再隐藏输入。 (#1318 )
如果python文件被标记为可执行,则重载程序将不会将python可执行文件预先发送到命令行。这使得重新装载机可以在尼克松身上工作。 (#1242 )
解决一个问题
sys.path
与一起运行时在重新加载之间会发生变化python -m app
.重载程序可以检测到模块是用“-m”运行的,并重建该模块而不是中的文件路径。sys.argv
重新加载时。 (#1416 )dev服务器可以通过如下方式传递主机名绑定到UNIX套接字
unix://app.socket
. (#209 , #1019 )服务器使用
IPPROTO_TCP
常量而不是SOL_TCP
为了Jython的兼容性。 (#1375 )使用临时SSL证书时
run_simple()
,证书显示为自签名,而不是由无效的颁发机构签名。 (#1430 )开发服务器将记录未引用的IRI,而不是原始请求行,以便在开发期间更容易在请求路径中使用Unicode。 (#1115 )
开发服务器识别
ConnectionError
在python 3上使客户机静音断开连接,而不使其他用户静音OSErrors
可能是在应用程序内部提出的。 (#1418 )环境键
REQUEST_URI
和RAW_URI
包含原始路径,然后对其进行百分比解码。这是非标准的,但是许多WSGI服务器添加了它们。中间件可以取代PATH_INFO
根据原始值进行路由。 (#1419 )EnvironBuilder
没有设置CONTENT_TYPE
或CONTENT_LENGTH
在环境中,如果没有设置。以前,如果没有设置这些值,则使用默认值。现在可以区分空值和未设置值。 (#1308 )测试客户端引发
ValueError
如果查询字符串参数将覆盖路径中的查询字符串。 (#1338 )test.EnvironBuilder
和test.Client
拿一个json
参数而不是手动传递data
和content_type
.这是使用test.EnvironBuilder.json_dumps()
方法。 (#1404 )test.Client
重新编写重定向处理。 (#1402 )重定向环境是从初始请求环境复制的。
当重定向到根目录下的路径时,脚本根目录和路径是正确区分的。
head方法未更改为get。
307和308代码保留了方法和主体。所有其他的都忽略主体和相关的头。
头将按照浏览器的操作传递给所有代码的新请求。
test.EnvironBuilder
在从数据中检测内容类型和长度头时,除了wsgi键之外,还设置它们。即使在
buffered=False
为了确保迭代器中间件可以安全地运行清理代码。只有最后一个响应没有缓冲。 (#988 )
EnvironBuilder
,FileStorage
和wsgi.get_input_stream()
不再共享全局_empty_stream
实例。这通过防止在一个请求中关闭流会影响其他用法的情况来改进测试隔离。 (#1340 )默认值
SecureCookie.serialization_method
将从更改pickle
到json
在1.0中。要升级现有令牌,请重写unquote()
尝试pickle
如果json
失败。 (#1413 )CGIRootFix
不再修改PATH_INFO
对于非常老的版本的lighttpd。LighttpdCGIRootFix
重命名为CGIRootFix
在0.9中。两者都已弃用,将在1.0版中删除。 (#1141 )werkzeug.wrappers.json.JSONMixin
已替换为flask的实现。检查文档的完整API。 (#1445 )contrib模块已弃用,将被移入
werkzeug
在1.0版中完全清除或清除。已发出拒绝警告的某些模块已被删除。一定要用运行或测试代码python -W default::DeprecationWarning
捕获您正在使用的任何不推荐使用的代码。 (#4 )LintMiddleware
已经搬到werkzeug.middleware.lint
.ProfilerMiddleware
已经搬到werkzeug.middleware.profiler
.ProxyFix
已经搬到werkzeug.middleware.proxy_fix
.JSONRequestMixin
已经搬到werkzeug.wrappers.json
.cache
已经被提取到一个单独的项目中, cachelib .不推荐使用Werkzeug中的版本。securecookie
和sessions
已经被提取到一个单独的项目中, secure-cookie .不推荐使用Werkzeug中的版本。一切都在
fixers
除外ProxyFix
,已弃用。一切都在
wrappers
除外JSONMixin
,已弃用。atom
已弃用。这与Werkzeug的其他地方不符,社区中的一个专门类库能更好地为您服务。jsrouting
已删除。在呈现模板或JSON响应时设置URL。limiter
已删除。它的特定用途由werkzeug直接处理,但流限制一般由wsgi服务器更好地处理。testtools
已删除。与默认测试客户机相比,它没有提供显著的好处。iterio
被贬低。
wsgi.get_host()
不再看了X-Forwarded-For
. 使用ProxyFix
来处理这件事。 (#609 , #1303 )ProxyFix
被重构以支持更多的头、多个值和更安全的配置。每个头支持多个值。每个头分别配置受信任的代理数。这个
num_proxies
参数已弃用。 (#1314 )集合
SERVER_NAME
和SERVER_PORT
基于X-Forwarded-Host
. (#1314 )集合
SERVER_PORT
和修改HTTP_HOST
基于X-Forwarded-Port
. (#1023 , #1304 )集合
SCRIPT_NAME
基于X-Forwarded-Prefix
. (#1237 )原始的wsgi环境值存储在
werkzeug.proxy_fix.orig
钥匙,一个听写器。各个钥匙werkzeug.proxy_fix.orig_remote_addr
,werkzeug.proxy_fix.orig_wsgi_url_scheme
和werkzeug.proxy_fix.orig_http_host
被贬低。
中间件来自
werkzeug.wsgi
已移动到下面的单独模块werkzeug.middleware
,以及从werkzeug.contrib
. 老年人werkzeug.wsgi
导入被弃用,将在1.0版中删除。 (#1452 )werkzeug.wsgi.DispatcherMiddleware
已经搬到werkzeug.middleware.dispatcher.DispatcherMiddleware
.werkzeug.wsgi.ProxyMiddleware
移动到werkzeug.middleware.http_proxy.ProxyMiddleware
.werkzeug.wsgi.SharedDataMiddleware
已经搬到werkzeug.middleware.shared_data.SharedDataMiddleware
.
ProxyMiddleware
代理查询字符串。 (#1252 )由生成的文件名
ProfilerMiddleware
可以定制。 (#1283 )这个
werkzeug.wrappers
模块被转换成一个包,它的各种类被组织成单独的模块。任何以前记录的类(理解为现有的公共API)仍然可以从werkzeug.wrappers
或者可以从其特定模块导入。 (#1456 )
版本0.14.1¶
2017年12月31日发布
在集成开发服务器中解决了状态代码处理的回归问题。
0.14版¶
2017年12月31日发布
HTTP异常现在被自动捕获
Request.application
.添加了对边缘浏览器的支持。
增加了对缺乏
SpooledTemporaryFile
.通过if-match添加对etag处理的支持
添加了对samesite cookie属性的支持。
补充
werkzeug.wsgi.ProxyMiddleware
实施
has
对于NullCache
get_multi
在缓存中,客户机现在一直返回列表。改进了监视器观察器的关闭,以便重载程序在旧版本的python退出时不会崩溃。
为添加了支持
filename*
文件名属性符合RFC 2231解决了在Windows上无法准确读取重新加载PIN的计算机ID的问题。
为重载程序中的init文件中的语法错误添加了解决方法。
添加了对在Windows上使用控制台脚本的重新加载程序的支持。
如果不需要HTTP主体(204、204、头请求等),内置HTTP服务器将不再关闭连接。
这个
EnvironHeaders
对象现在跳过空内容类型和长度(如果设置为错误值)。Werkzeug将不再发送1xx或204/304响应上的内容长度头段。
现在也允许cookie值包含斜杠和等号,而不引用。
放宽了路由转换器参数的regex。
如果发送的cookie没有值,那么现在假定它们有一个空值,解析器接受这个值。以前,这可能已经损坏了值后面的cookie。
测试
Client
和EnvironBuilder
现在像请求对象一样支持mimetype。添加了对URL规则中静态权重的支持。
更好地处理一些更复杂的重载场景,其中sys.path包含非目录路径。
EnvironHeaders
如果将非字符串键传递给它,则不会再引发奇怪的错误。
0.13版¶
2017年12月7日发布
不赞成对python 2.6和3.3的支持。 这些版本的CI测试将不运行,下一个版本将完全放弃支持。 (pallets/meta#24 )
提高
TypeError
当端口不是整数时。 (#1088 )response.age
被解析为timedelta
.以前,它被错误地视为datetime
.头值是整数秒,而不是日期字符串。 (#414 )修复错误
TypeConversionDict
使用转换器时不会传播错误。 (#1102 )Authorization.qop
是字符串而不是集合,以符合RFC2617。 (#984 )默认情况下,当编码的cookie大于4093字节时引发异常。浏览器可能会静默地忽略大于此值的cookie。
BaseResponse
具有新属性max_cookie_size
和dump_cookie
有新的论点max_size
来配置这个。 (#780 , #1109 )在中修复类型错误
werkzeug.contrib.lint.GuardedIterator.close
. (#1116 )BaseResponse.calculate_content_length
现在正确地适用于Python3上的Unicode响应。它首先使用iter_encoded
. (#705 )安全cookie控件在python 3上使用字符串密钥。 (#1205 )
共享数据中间件接受一个列表,而不是静态位置的dict,以保留查找顺序。 (#1197 )
不带编码的HTTP头值可以包含单引号。 (#1208 )
内置的dev服务器支持使用分块传输编码接收请求。 (#1198 )
0.12版本¶
2017年5月16日发布
修复回归:拉请求
#892
阻止Werkzeug在反向代理后正确记录远程客户端的IP,即使使用 ProxyFix .修复错误 safe_join 在Windows上。
0.12版本¶
2017年3月15日发布
修复Windows上重新加载程序(用于调试模式)的崩溃。 (OSError: [WinError 10038] )。请参见拉取请求
#1081
将更改部分还原为的类层次结构 Headers . 见
#1084
.
版本0.12¶
2017年3月10日发布
为werkzeug.script发出大量的贬低警告
使用 inspect.getfullargspec 内部可用时 inspect.getargspec 在3.6中消失
增加了对状态代码451和423的支持
改进了生成错误建议。特别是,只有当有人将错误严格化时,建议才会被计算出来。
增加了对Uwsgi缓存后端的支持。
修复在 FileStorage 会导致无限循环。
数据结构现在从相关的基类继承 collections stdlib中的模块。见794。
在用户代理字符串中添加对识别netbsd、openbsd、freebsd、dragonflybsd平台的支持。
正确识别SeaMonkey浏览器名称和版本
识别baiduspider和bingbot用户代理
如果 LocalProxy 的包装对象是一个函数,请使用 __wrapped__ 属性。
的默认值
generate_password_hash
已更改为更安全的,请参阅拉请求#753
.在选项头解析中添加对编码的支持,请参见拉请求
#933
.test.Client
现在用相对URL正确地处理位置头,请参见拉请求#879
.什么时候? HTTPException 它现在打印描述,以便于调试。
Werkzeug的类似dict的数据结构现在已经
view
-方法在python 2下,请参见pull请求#968
.修复错误
MultiPartParser
当没有的时候stream_factory
是在初始化期间提供的,请参见拉请求#973
.在调试器中间件的python提示中禁用自动更正和拼写检查,请参见拉请求
#994
.方法不匹配时不重定向到斜线路由,请参见拉请求
#907
.使用时修复错误
SharedDataMiddleware
对于冻结的包裹,请参见拉取请求#959
.Range 为无效值修复了头分析函数
#974
.添加对字节范围请求的支持,请参见拉请求
#978
.在dev服务器中使用现代加密默认值
#1004
.测试客户机的post()方法现在通过data参数接受文件对象。
基于HTTP代码的彩色运行简单终端输出
#1013
.在调试器控制台中修复自XSS,请参见
#1031
.固定IPython 5.xShell支架,参见
#1033
.更改接受数据结构以先按特定性排序,以便在使用时获得更准确的结果
best_match
对于mime类型(例如requests.accept_mimetypes.best_match
)
版本0.11.16¶
werkzeug.serving:设置内容类型/内容长度(如果客户提供)
Werkzeug.serving:修复使用时重新加载程序的崩溃 python -m werkzeug.serving .
版本0.11.15¶
2016年12月30日发布。
上一版本中的错误修复程序。
版本0.11.14¶
2016年12月30日发布。
导入前检查平台是否可以复刻
ForkingMixIn
,创建时引发异常ForkingWSGIServer
在这样一个平台上,见pr#999
.
版本0.11.13¶
2016年12月26日发布。
对某些Windows安装上的重新加载颁发者进行了正确的修复。
版本0.11.12¶
2016年12月26日发布。
修复多个与空列表相关的错误。参见
#1000
.添加一些文档字符串到 EnvironBuilder 以前无意中丢失的属性。
为Windows上的重新加载添加了一个解决方法。
版本0.11.11¶
2016年8月31日发布。
修复python3的jsonrequestmixin。见731
当传递整数时,修复测试客户机中的中断字符串处理。见852
修复错误
parse_options_header
如果以逗号或分号开头的无效内容类型将导致返回值无效,请参阅问题#995
.在将空列表作为值传递时修复多个方面的错误,请参见问题
#979
.修复允许在Werkzeug调试器上使用XSS的安全问题。参见
#1001
.
版本0.11.10¶
2016年5月24日发布。
修复了在Python2.6上运行并使用中断的区域设置时发生的错误。请参见拉取请求912。
修复了在Google应用程序引擎上运行调试器时的崩溃。见问题925。
修复了多部分解析可能导致内存耗尽的问题。
版本0.11.9¶
2016年4月24日发布。
已更正导致调试器在POSIX系统上不使用计算机GUID的问题。
针对调试器的pin用法,更正了python 3上的unicode错误。
更正了pin调试代码中的时间戳验证。没有这个固定装置,这个别针被记住的时间太长了。
版本0.11.8¶
2016年4月15日发布。
修复了Python3上OS X上的机器guid检测代码的问题。
版本0.11.7¶
2016年4月14日发布。
修正了调试器在python 3上的回归。
版本0.11.6¶
2016年4月14日发布。
服务:仍然在错误的请求上显示客户机地址。
改进了对调试器的基于pin的保护,使其更难通过尝试cookie强行执行。请记住,调试器 不适用于在生产环境中运行
将pin超时时间增加到一周,以减少对用户的烦扰,从而减少用户完全禁用pin检查的可能性。
werkzeug.serving:当路径以双斜杠开头时,修复损坏的http_主机。
版本0.11.5¶
2016年3月22日发布。
werkzeug.serving:尝试与HTTP服务器的SSL连接时修复崩溃。
版本0.11.4¶
2016年2月14日发布。
修复了werkzeug.serving不在-m标志下工作。
修复了错误的弱ETag处理。
版本0.11.3¶
2015年12月20日发布。
修复了复制操作不适用于代理的问题。
已将开发服务器的日志记录操作更改为在所有情况下正确记录服务器运行的位置。
修正了另一个使用SSL包装的回归,类似于0.11.2中的修正,但代码路径不同。
0.11.2版本¶
2015年11月12日发布。
修复python 3上Windows上的可继承套接字。
修复了复刻服务器不再启动的问题。
修复了支持通过文件描述符打开套接字的平台上的SSL包装。
不再从看门狗重新加载程序记录。
主机中的Unicode错误现在可以更好地捕获或转换为错误的请求错误。
0.11版本¶
2015年11月10日发布。
修正了调试器中python 3的回归。
版本0.11¶
2015年11月8日发布,代号gleisbaumaschine。
补充
reloader_paths
选择权run_simple
以及其他功能werkzeug.serving
.这允许用户使用自定义路径完全覆盖werkzeug的python模块监视。Werkzeug类的许多自定义缓存属性现在是python类的子类。
property
类型(问题#616
)bind_to_environ
现在不区分中的隐式和显式默认端口号HTTP_HOST
(拉动请求#204
)BuildErrors
现在有更多的信息。他们提供完整的句子作为错误信息,并提供建议(拉请求#691
)修复在用户代理解析器中提取safari的内部版本号而不是版本的错误(pull请求
#703
)修复了rediscache set_many为twemproxy中断的问题,twemproxy不支持默认的multi命令(pull请求
#702
)mimetype
请求类和响应类的参数现在总是转换为小写。已更改缓存,以便在超时为0时缓存永不过期。这还修复了redis setex的问题(问题
#550
)Werkzeug现在假设
UTF-8
作为UNIX上的文件系统编码,如果python检测到它是ascii。新建可选 has 方法。
修复了 parse_options_header (拉动请求
#643
)如果启用了重新加载,那么如果可能的话,服务器现在将打开父进程中的套接字。这意味着当重载程序启动来自客户机的连接时,将等待而不是关闭。这并不适用于所有的Python版本。
为调试器实现了基于pin的身份验证。这可以选择禁用,但不鼓励。此更改是必要的,因为发现生产中运行调试器的人太多。
devserver不再需要安装ssl模块。
版本0.10.5¶
(错误修复版本,发布日期待定)
重新加载:通过将临时文件移到原始文件上(例如,带Pycharm的案例(拉请求),正确检测文件更改。
#722
)修复的布尔行为
werkzeug.datastructures.ETags
在python 3下(发行#744
)
版本0.10.4¶
(Bugfix发布,2015年3月26日发布)
重新发布0.10.3,手动移除包装制品。
版本0.10.3¶
(Bugfix发布,2015年3月26日发布)
重新发布0.10.2,无包装瑕疵。
0.0.2版本¶
(Bugfix发布,2015年3月26日发布)
固定问题,其中
empty
可以中断依赖关键字参数的第三方库(拉请求#675
)改进
Rule.empty
通过提供`get_empty_kwargs
允许设置自定义Kwarg而不必覆盖整个empty
方法。(拉动请求#675
)固定的
`extra_files
`当包含在服务器参数中时,用于重新加载以不导致启动崩溃的参数使用 MultiDict 现在不再支持生成URL时。该行为引入了几个回归。
修复stat重载的性能问题(拉请求
#715
)
0.0.1版本¶
(Bugfix版本,2015年2月3日发布)
修正了对URL使用多个查询值的回归(拉请求
#667
)修复Eventlet的MonkeyPatching和内置服务器的问题(拉请求
#663
)
版本0.10¶
2015年1月30日发布,代号Bagger。
更改了中缓存的错误处理并改进了testsuite
contrib.cache
.修正了在创建特殊的SSL上下文时python 3上的错误,因为 sys.maxint 未定义。
修复了python 3上的一个bug,它导致
make_ssl_devcert()
例外地失败。增加了504和505的例外情况。
增加了对Chromeos检测的支持。
向路由系统添加了UUID转换器。
添加了说明如何退出服务器的消息。
修复了python 2上的一个bug,它导致
len
对于werkzeug.datastructures.CombinedMultiDict
崩溃。添加了对stdlib pbkdf2 hmac的支持(如果找到兼容摘要)。
要使用的移植测试套件
py.test
.对各种中间商的次要优化(拉请求
#496
和#571
)使用stdlib
ssl
模块而不是OpenSSL
对于内置服务器(问题#434
)。这意味着不再支持OpenSSL上下文,而是ssl.SSLContext
来自stdlib。生成外部URL时允许与协议相关的URL。
固定的Atom联合打印TZ感知日期时间对象的时区偏移量(拉请求
#254
)改进了重新加载程序,以跟踪添加的文件,并从包中出现语法错误的损坏的sys.modules设置中恢复。
cache.RedisCache
现在支持任意**kwargs
对于redis对象。werkzeug.test.Client
现在在解析307重定向时使用原始请求方法(拉请求#556
)werkzeug.datastructures.MIMEAccept
现在正确处理mimetype参数(pull请求#205
)werkzeug.datastructures.Accept
现在处理的质量0
不可容忍,根据RFC 2616(拉请求#536
)werkzeug.urls.url_fix
现在正确编码主机名idna
编码(问题#559
)。它也不会在格式错误的URL上崩溃(问题#582
)werkzeug.routing.MapAdapter.match
now recognizes the difference between the path/
and an empty one (issue `` #360``)。交互式调试器现在尝试解码非ASCII文件名(问题
#469
)将生成的SSL证书的默认密钥大小增加到1024位(发出
#611
)添加了对指定
Response
调用时使用的子类redirect()
.werkzeug.test.EnvironBuilder
现在不再使用请求方法来猜测内容类型,而完全依赖于form
,files
和input_stream
属性(问题#620
)将Symbian添加到用户代理平台列表中。
修正了自动设置内容长度的条件
未设置
Content-Length
写入response.stream时(问题#451
)wrappers.Request.method
现在总是大写,消除了wsgi环境的不一致性(问题647
)routing.Rule.empty
现在可以正确处理子类Rule
(拉动请求#645
)在同步更新的情况下使地图更新安全。
允许同一字段有多个值用于URL生成(问题
#658
)
版本0.9.7¶
(错误修复版本,发布日期待定)
修复中的Unicode问题
werkzeug.debug.tbtools
.修复中的python 3兼容性问题
werkzeug.posixemulation
.的致命打字错误的后台修复
ImmutableList
(问题)#492
)为创建缓存目录
FileSystemCache
原子(问题#468
)使用memcached密钥的本机字符串来使用python 3客户机(问题
#539
)修复的字符集检测
werkzeug.debug.tbtools.Frame
对象(问题#547
和#532
)固定
AttributeError
遮掩werkzeug.utils.import_string
(问题)#182
)显式关闭服务器(问题
#519
)修复超过2592000的超时错误地解释为Unix时间戳
werkzeug.contrib.cache.MemcachedCache
(问题)#533
)修复错误在哪里
werkzeug.exceptions.abort
将引发预期类的任意子类(问题#422
)修复损坏的
jsrouting
(由于移除werkzeug.templates
)werkzeug.urls.url_fix
现在不再对格式错误的URL崩溃,而是返回未修改的URL。这是一个廉价的解决方法#582
版本0.10中包含正确的修复程序。RPR
werkzeug.wrappers.Request
不再在非ASCII值上崩溃(拉请求#466
)修复错误
cache.RedisCache
当与redis.StrictRedis
对象(拉请求#583
)这个
qop
参数用于WWW-Authenticate
按照RFC 2617(发行版)的要求,标题现在总是被引用#633
)修复错误
werkzeug.contrib.cache.SimpleCache
在python 3中,当从缓存中删除旧条目时,add/set可能会引发异常(pull请求#651
)
版本0.9.6¶
(Bugfix版本,2014年6月7日发布)
为IRI到URI的转换添加了一个安全的转换,并在内部使用它来解决协议的规范冲突问题,例如
itms-service
.
版本0.9.7¶
修复了uri_to_iri()不重新编码查询字符串参数中的哈希。
0.9.5版¶
(Bugfix版本,2014年6月7日发布)
将charset参数从请求对象转发到environ builder。
修复了对多部分数据中缺少边界的错误处理。
固定的会话创建在没有
os.urandom()
.修正了字典键中的pluses没有正确的url编码。
修正了deepcopy不适用于多个dict的问题。
修复了重定向上的双引号问题。
修复了2.x上头中出现的Unicode键的问题。
修复了测试生成器中使用Unicode字符串的错误。
修复了wsgi探查器中python 3上的unicode错误。
修复了python 2.7.7和python 3.4上的安全字符串比较函数的问题。
版本0.9.4¶
(Bugfix版本,2013年8月26日发布)
修复了Python3.3和cookie解析中的一个边缘案例的问题。
修复了通过wsgi解码舞蹈未正确处理的解码错误。
修复了URI到IRI的转换错误地解码百分号。
版本0.9.3¶
(Bugfix版本,2013年7月25日发布)
恢复的行为
data
请求类的描述符,用于0.9之前的行为。这也意味着.data
和.get_data()
有不同的行为。新代码应使用.get_data()
总是这样。除此之外,现在还有一个标志
.get_data()
方法控制表单数据分析应该发生什么,表单分析器将使用缓存数据。这使得处理自定义表单数据更加一致。
版本0.9.2¶
(Bugfix版本,2013年7月18日发布)
增列
unsafe
参数设置为urls.url_quote
。修复了的问题
urls.url_quote_plus
不引用 '+' 正确。移植的剩余部分
RedisCache
到python 3.3。移植的剩余部分
MemcachedCache
到python 3.3修复了contrib atom模块中的拒绝警告。
修正了通过标题字典设置内容类型而不是使用内容类型参数的回归。
对stdlib安全字符串比较函数使用正确的名称。
修复了文档字符串中的错误引用
release_local()
.修复了一个 AttributeError 有时在访问
werkzeug.wrappers.BaseResponse.is_streamed
属性。
0.9.1版¶
(Bugfix版本,2013年6月14日发布)
修正了在路由系统的某些部分或URL引用函数中不再接受整数的问题。
修复了一个问题 url_quote 没有为单个数字码点生成正确的转义码。
修复了一个问题
SharedDataMiddleware
在某些情况下,没有正确地读取路径并中断ETag生成。正确处理 Expect: 100-continue 在开发服务器中解决与curl有关的问题。
请求关闭时自动排出输入流。这可以解决不接触请求文件导致超时的问题。
修复了如果将非限制流传递到多部分分析器中,则不会执行任何操作的流的耗尽。
引发了多部分分析器的缓冲区大小。
版本0.9¶
2013年6月13日发布,代号Planierraupe。
为添加了支持
tell()
在有限的河流上。ETags
如果它包含至少一个任何类型的ETag,包括弱ETag,那么它就不是零。为SSL服务器的stdlib中的bug添加了一个解决方法。
改进了devserver的ssl接口,使其能够轻松生成证书并从文件中加载证书。
重构测试客户端以调用类上用于重定向的open方法。这使得子类化更加强大。
wsgi.make_chunk_iter
和make_line_iter
现在支持迭代器和流的处理。路由系统生成的URL现在不再引用
+
.URL修复现在不再引用某些保留字符。
这个
werkzeug.security.generate_password_hash()
而check函数现在支持任何hashlib算法。wsgi.get_current_url 对于在查询字符串中发送非ASCII数据的浏览器,现在是ASCII安全的。
向本地代理添加了更多的运算符。
添加了一个钩子来覆盖路由系统中的默认转换器。
HTTP异常的描述字段现在总是转义的。使用标记对象禁用该功能。
在代理修复程序中添加了代理参数的数量,以使其在普通代理设置中更加安全。默认情况下,它不再像以前那样信任x-forwarded-for头。
增加了对URI/IRI函数中片段处理的支持。
为添加自定义类支持
werkzeug.http.parse_dict_header()
.更名 LighttpdCGIRootFix 到 CGIRootFix .
总是治疗 + 修复URL时的安全性就像人们喜欢滥用URL一样。
在contrib profiler的目录中添加了对分析的支持。
转义函数现在默认转义引号。
改变了例外的重复,使其不那么神奇。
简化的异常接口,不再需要传递环境来接收响应对象。
向iterio对象添加了sentinel参数。
增加了对安全模块的pbkdf2支持。
添加了一个纯请求类型,该类型禁用所有表单分析,只留下流。
已删除对已弃用的的的支持 fix_headers .
已删除对已弃用的的的支持 header_list .
已删除对的已弃用参数的支持 iter_encoded .
已删除对已弃用的有限流对象的非静默用法的支持。
移除先前假人的支架 writable 缓存属性上的参数。
添加了对显式关闭请求对象以关闭关联资源的支持。
条件请求处理或对响应上的数据属性的访问不再忽略直接传递模式。
删除了werkzeug.templates和werkzeug.contrib.kickstart。
已更改转发主机的主机查找逻辑,以允许主机列表,在这种情况下,只提取第一个。
补充 wsgi.get_query_string , wsgi.get_path_info 和 wsgi.get_script_name 并使 wsgi.pop_path_info 和 wsgi.peek_path_info 函数执行Unicode解码。这对于避免在python 3上公开wsgi编码舞蹈是必要的。
补充 content_encoding 和 content_md5 到请求对象的公共请求描述符mixin。
补充 options 和 trace 到测试客户机。
对输入流的使用进行了全面的检查,以便于使用和扩展。现在,通过检测内容类型头而不是请求方法,在输入端检测内容负载更符合HTTP。这也意味着请求类上的流属性总是可用的,而不是在解析失败时。
增加了对使用的支持
werkzeug.wrappers.BaseResponse
在WITH语句中。改变 get_app_iter 尽早获取响应,以便在包装响应iterable时不会失败。这使得过滤更容易。
介绍 get_data 和 set_data 响应方法。
介绍 get_data 请求。
软不赞成 data 请求和响应对象的描述符。
补充 as_bytes 对某些头文件执行操作,以简化对cookie等内容的处理。
使调试器将跟踪粘贴到Github的Gist服务中作为私有粘贴。
0.8.4版¶
(错误修复版本,发布日期待定)
在调试器中添加了一个favicon,它修复了通过在Google Chrome中对/favicon.ico的请求触发状态更改的问题。这可以解决flask和其他框架的一些问题,这些框架在堆栈上使用上下文本地对象,并在出错时保留上下文。
修复了调试器中向上滚动的问题。
修复了运行在与URL根目录不同的URL上的调试程序的问题。
修正了代理没有正确转发一些很少使用的特殊方法的问题。
添加了一个解决方案,以防止XSS保护Chrome破坏调试器。
如果redis未运行,则跳过redis测试。
修复了多部分分析器中导致内容类型无法正确提取的错误。
0.8.3版¶
(Bugfix版本,2012年2月5日发布)
修复了另一个问题
wsgi.make_line_iter
其中,没有正确处理比缓冲区大小更长的行。在调试控制台完成执行后还原stdout,以便更好地在GAE上使用调试器。
修复了int子类的redis缓存错误(影响bool缓存)。
修复了来自不受信任源的重定向目标的XSS问题。
Redis缓存后端现在支持密码验证。
0.8.2版¶
(Bugfix版本,2011年12月16日发布)
修复了内置服务器的请求处理无法正确响应套接字错误的问题。
路由请求重定向异常的代码属性现在已正确使用。
修复了一个关闭窗口的错误。
修正了一些在URL规则中硬编码非ASCII字符的Unicode问题。
修复了分配给FDEL而不是
__doc__
.修正了一个问题,即CRLF的行尾可以被line iter函数分割成两部分,从而导致多部分文件上载出现问题。
0.8.1 版本¶
(Bugfix版本,2011年9月30日发布)
修复了memcache工作不正常的问题。
修复了python 2.7.1及更高版本的一个问题,该问题破坏了使用
copy.copy()
.改变了不可变的有序多指令的散列方法,以解决其他Python实现可能出现的问题。
版本0.8¶
2011年9月29日发布,代号L_Tkolben
为一般目的删除了特定于数据结构的键错误
BadRequestKeyError
.文件化的
werkzeug.wrappers.BaseRequest._load_form_data()
.路由系统现在还接受字符串而不是字典 query_args 参数,因为我们只是为重定向传递它们。
Werkzeug现在自动设置内容长度,当
data
属性的设置是为了提高效率和简单性。路由系统现在将服务器名称规范化为小写。
如果服务器名称的配置不正确,路由系统将不再引发ValueErrors。这将使部署更加容易,因为您现在可以忽略这个因素。
修复了分析HTTP摘要头的错误。它拒绝了缺少nc和nonce参数的头。
代理修复程序现在也更新了基于x-forwarded-proto的wsgi.url_方案。
为redis缓存添加了对键前缀的支持。
添加了抑制包装器中某些自动更正的功能,这些自动更正现在通过 autocorrect_location_header 和 automatically_set_content_length 在响应对象上。
Werkzeug现在使用了一种新的方法来检查输入数据的长度是否完整,如果服务器不能这样做,它会自己引发IO错误。
wsgi.make_line_iter
现在要求的限制不高于流可以提供的长度。将表单解析重构为一个表单分析器类,这样就可以钩住解析过程的各个部分进行调试和扩展。
对于条件响应,内容长度在已经存在时不再设置,如果缺少则添加。
不可变的数据结构现在可以进行哈希运算。
Headers数据结构不再允许值中有换行符以避免头注入攻击。
使通过子类化在代理修复中选择不同的远程地址成为可能。
添加了基于流的URL解码。这减少了URL解码的大型传输表单数据的内存使用,因为Werkzeug将不再将所有未解析的数据加载到内存中。
memcache客户机现在不再使用错误的cmemcache模块并支持pylibmc。GAE不会自动尝试,专用类也不再是必需的。
Redis缓存现在可以正确地序列化数据。
移除了对python 2.4的支持
0.7.2版¶
(Bugfix版本,2011年9月30日发布)
修复了调试程序的CSRF问题。
调试器现在正在lodgit上生成私有粘贴。
如果URL映射现在绑定到环境,那么查询参数将从中正确解码以进行重定向。
0.7.1版本¶
(Bugfix版本,2011年7月26日发布)
修复了新版本的ipython的问题。
禁用不可靠工作的基于pyinotify的重载。
版本0.7¶
2011年7月24日发布,代号Schraubschl_ssel
向werkzeug缓存抽象层添加对python libmemcached的支持。
改进
url_decode()
和url_encode()
性能。修复了通过pkg_资源加载时,sharedtamiddleware可能导致奇怪路径上的内部服务器错误的问题。
修正了当生成的组件包含冒号时导致URL无效的URL生成错误。
werkzeug.import_string()
现在可以正确地使用部分设置的包。已在开发服务器上禁用IPv6的自动套接字切换,因为它导致了问题。
创建条件HTTP响应时,Werkzeug不再重写日期头。
路由系统提供了一种检索给定路径匹配方法的方法。
路由系统现在接受一个参数来更改编码错误行为。
本地管理器现在可以接受构造函数中转发到包装的本地对象的自定义标识函数。
现在,url-unquote-plus再次接受unicode字符串。
修复了文件系统会话支持的prune函数和并发使用的问题。
修复了丢弃端口的外部URL生成问题。
为Werkzeug缓存抽象层添加了对pylibmc的支持。
修复了新的多部分分析器的一个问题,该问题发生在换行符刚好在块限制上时。
如果端口正在使用,则cookie现在设置正确。如果试图为没有点的域设置cookie,则会引发运行时错误。
修复了template.from文件不适用于文件描述符的问题。
重新加载现在可以使用inotify跟踪重新加载。这需要安装pyinotify库。
Werkzeug调试器现在可以提交到自定义lodgit安装。
重定向函数的状态代码断言现在允许201用作重定向代码。虽然它不是一个真正的重定向,但它与重定向共享了足够多的内容,使函数仍然有用。
修复了Pypy的SecureCookie。
固定的 ValueErrors 在接到 best_match 在 MIMEAccept 提供无效用户数据时的对象。
已弃用 werkzeug.contrib.kickstart 和 werkzeug.contrib.testtools
URL路由现在可以通过URL参数来保持重定向。在将来,对URL参数进行匹配也是可能的。
头编码从UTF-8更改为Latin1,以支持到python 3的端口。传递给对象的字节字符串保持不变,这使得有可能使用UTF-8 cookie。在这一部分中,python 3版本稍后将发生变化,因为它将始终对latin1值进行操作。
修复了表单分析器中的一个错误,如果使用多部分数据中的某些值,该错误会导致最后一个字符被丢弃。
multipart解析器现在查看part-individual-content-type头来覆盖全局字符集。
为文件存储对象引入了mimetype和mimetype_-params属性。
更改了filestore文件名回退逻辑以跳过python用于标记特殊文件(如stdin)的特殊文件名。
引入了更多的HTTP异常类。
call_on_close 现在可以用作装饰。
支持Redis作为缓存后端。
补充 BaseRequest.scheme .
支持RFC5789补丁方法。
新的自定义路由分析器和更好的排序。
拆下的支架 is_behind_proxy .使用wsgi中间件来重写 REMOTE_ADDR 根据你的设置。另请参见
werkzeug.contrib.fixers.ProxyFix
换掉一个。向测试客户端添加了cookie锻造支持。
增加了对路由系统中基于主机的匹配的支持。
从默认的“忽略”切换到更好的“替换”Unicode错误处理模式。
内置服务器现在将名为“werkzeug.server.shutdown”的函数添加到wsgi env中以启动关闭。这目前只适用于Python2.6和更高版本。
现在假设报头是latin1,以便在我们得到支持后与python 3更好地兼容。
补充 accept_json 类似于 accept_html 上
werkzeug.datastructures.MIMEAccept
.werkzeug.utils.import_string()
现在失败了,有更好的错误消息可以精确定位问题。添加了对 If-Range 页眉 (
werkzeug.http.parse_if_range_header()
和werkzeug.datastructures.IfRange
)添加了对 Range 页眉 (
werkzeug.http.parse_range_header()
和werkzeug.datastructures.Range
)添加了对 Content-Range 响应的头并为其提供访问器对象 (
werkzeug.http.parse_content_range_header()
和werkzeug.datastructures.ContentRange
)
0.6.2版¶
(Bugfix版本,2010年4月23日发布)
已重命名属性 implicit_seqence_conversion 请求对象的属性 implicit_sequence_conversion .
0.6版本¶
(Bugfix版本,2010年4月13日发布)
大量改进的本地对象。现在应该选择独立的greenlet构建并支持免费可调用文件的代理。现在还有一个本地堆栈,通过将当前请求/响应推到堆栈顶部,可以从内部调用相同的应用程序。
如果没有提供方法,路由生成方法也将正确生成非默认方法规则。
为内置服务器添加了适当的IPv6支持。
Windows特定的文件系统会话存储修复程序。(现在应该在高并发性下更稳定)
固定A NameError 在会话系统中。
修复了werkzeug.script系统中参数为空的错误。
修正了一个错误,如果应用程序使用
logging.basicConfig()
(499)增加了安全密码散列和检查功能。
HEAD 现在隐式添加为路由系统中的方法,如果 GET 存在。不这样做被认为是一个错误,因为代码经常假定是这样,并且在不规范化的Web服务器中也是这样。 HEAD 到 GET 这可能会打破 HEAD 请求。
脚本支持现在可以启动SSL服务器。
版本0.6¶
2010年2月19日发布,代号Hammer。
已删除挂起的折旧
sys.path现在从testapp打印。
修正了RFC2068与cookie值引用的不兼容。
这个
FileStorage
现在允许访问多部分头文件。cached_property.writeable 已弃用。
MapAdapter.match()
now accepts a return_rule keyword argument that returns the matched Rule instead of just the endpointrouting.Map.bind_to_environ()
如果映射绑定到无效的wsgi环境,则立即引发更正确的错误消息。向内置开发服务器添加了对SSL的支持。
当响应对象被评估为wsgi应用程序时,它们将不再就地修改。为了向后兼容 fix_headers 函数被重写时仍将被调用。但是,您应该将应用程序更改为使用 get_wsgi_headers 如果在发送响应之前需要修改头,因为在将来的版本中向后兼容性支持将消失。
append_slash_redirect()
不再需要查询字符串位于wsgi环境中。补充
DynamicCharsetResponseMixin
补充
DynamicCharsetRequestMixin
补充
BaseRequest.url_charset
请求和响应对象具有默认值 __repr__ 现在。
现在可以对内置数据结构进行处理。
表单数据解析器现在将查看文件名,而不是内容类型,以确定是否应将上载视为常规表单数据或文件上载。这修复了Google Chrome的错误。
改进的性能
make_line_iter
以及用于二进制上传的多部分解析器。固定的
is_streamed
修正了路径引用错误 EnvironBuilder 这导致路径信息和脚本名称以未加引号的方式结束在环境中。
werkzeug.BaseResponse.freeze()
现在设置内容长度。对于未知的HTTP方法,请求流现在总是有限的,而不是空的。这使得在Werkzeug之上更容易实现DAV和其他协议。
补充
werkzeug.MIMEAccept.best_match()
现在支持来自标准字典的多值测试客户端日志。以前你必须用多听写。
规则模板现在可以正确地与子装载、子域和其他规则工厂一起使用。
已弃用的非静默用法
werkzeug.LimitedStream
.为Werkzeug的许多部分增加了IRI处理支持。
开发服务器现在正确地登录到werkzeug记录器。
补充
werkzeug.extract_path_info()
修复了在
url_fix()
补充 fallback_mimetype 到
werkzeug.SharedDataMiddleware
.贬低
BaseResponse.iter_encoded()
的charset参数。补充
BaseResponse.make_sequence()
,BaseResponse.is_sequence
和BaseResponse._ensure_sequence()
.添加得更好 __repr__ 属于
werkzeug.Map
import_string 现在也接受Unicode字符串。
开发服务器不会在主机名后的双斜杠处中断。
更好的 __repr__ and _ _第条,共条 :exc:`werkzeug.exceptions.HTTPException
测试客户端现在可以正确处理多个cookie。
这个
werkzeug.routing.Map
现在有了一个带有默认转换器映射的类属性。这有助于子类在不将转换器传递给构造函数的情况下重写转换器。实施
OrderedMultiDict
改进了对文件系统上更高效的会话存储的会话支持。还增加了对当前存储在文件系统会话存储中的会话列表的支持。
Werkzeug不再使用python时间模块进行解析,这意味着可以解析范围更广的日期。
包装器没有类属性,因此无法交换它使用的dict和list类型。
Werkzeug调试器现在应该可以在appengine dev服务器上工作。
URL生成器现在支持删除意外参数。以前,它们总是作为查询字符串附加到URL。
探查器现在写入正确的流。
0.5.1版本¶
(Bugfix 0.5版本,2009年7月9日发布)
固定布尔检查
FileStorage
URL路由系统现在正确支持Unicode URL规则。
文件上载流不再需要提供truncate()方法。
实施
BaseRequest._form_parsing_failed()
.固定394
ImmutableDict.copy()
,ImmutableMultiDict.copy()
和ImmutableTypeConversionDict.copy()
返回可变的浅副本。修正了一个错误 make_runserver 编写操作脚本。
MultiDict.items()
和MutiDict.iteritems()
现在接受一个参数,为每个键的每个值返回一对。现在添加了额外的换行符,多部分分析器可以更好地处理手工制作的多部分请求。这修复了安装工具上载未正确处理的错误(390)
修复了原子馈送生成器中的一些小错误。
修复了客户端cookie头解析区分大小写的错误。
修正了不起作用的弃用警告。
固定包装装载
SharedDataMiddleware
.修复了安全cookie中的一个错误,该错误使本地时间未设置为UTC的服务器上的服务器端过期成为不可能。
修复了交互式调试器的控制台。
版本0.5¶
4月24日发布,代号Schlagbohrer。
现在需要python 2.4
修正了一个错误
IterIO
补充
MIMEAccept
和CharsetAccept
像平常一样工作Accept
但是对于mimetype和charset有额外的特殊规范化和额外的方便方法。把服务系统从wsgiref改成了自制的。
这个
Client
现在支持cookies。增加了
fixers
为Web服务器错误和托管安装副作用提供各种修复的模块。补充
werkzeug.contrib.wrappers
补充
is_hop_by_hop_header()
补充
is_entity_header()
补充
remove_hop_by_hop_headers()
补充
pop_path_info()
补充
peek_path_info()
补充
wrap_file()
和FileWrapper
感动 LimitedStream 从contrib包到常规的werkzeug包,并更改默认行为以引发异常,而不是在没有警告的情况下停止。旧类将在模块中保留到0.6。
实现了实验性的多部分解析器,取代了旧的CGI黑客。
补充
dump_options_header()
和parse_options_header()
补充
quote_header_value()
和unquote_header_value()
url_encode()
和url_decode()
现在接受分隔符参数在 & 和 ; 作为对分隔符。魔法开关已经不在了。所有表单数据分析函数以及
BaseRequest
对象具有参数(或属性)来限制传入字节数(全部或每个字段)。补充
LanguageAccept
请求对象现在被强制为所有集合的只读。
添加了许多新的集合类,通常重构集合。
测试支持被重构,半未记录 werkzeug.test.File 被替换为
werkzeug.FileStorage
.EnvironBuilder
添加并统一以前的distinctcreate_environ()
,Client
和BaseRequest.from_values()
.它们现在都工作得一样,这就不那么令人困惑了。正式记录了从内部模块导入的未定义行为。这些模块从未作为公共接口公开。
远离的 FileStorage.__len__ 这使得浏览器无法发送所有浏览器都发送的内容长度。
SharedDataMiddleware
使用 wrap_file 现在有一个可配置的缓存超时。补充
CommonRequestDescriptorsMixin
补充
CommonResponseDescriptorsMixin.mimetype_params
补充
werkzeug.contrib.lint
补充 passthrough_errors 到 run_simple .
补充 secure_filename
增列
make_line_iter
MultiDict
立即复制,而不是向呼叫者显示内部列表 getlist 以及返回列表的迭代函数。补充
follow_redirect
到open()
属于Client
.为添加了支持 extra_files 在里面
make_runserver()
0.4.1版¶
(Bugfix版本,2009年1月11日发布)
werkzeug.contrib.cache.Memcached 现在接受实现memcache.client接口的对象作为具有服务器地址的字符串列表的替代。现在还有一个 GAEMemcachedCache 连接到Google Appengine缓存。
现在显式地将密钥转换为字节字符串,因为Python2.6不再这样做。
url_encode 并且所有调用它的接口现在都支持选项的排序,但是默认情况下这些选项是禁用的。
开发服务器不再解析客户端的地址。
修正了打字错误 werkzeug.test 断了的那个 File .
Map.bind_to_environ 使用 Host 如果有的话,现在是标题。
固定的 BaseCache.get_dict (345)
werkzeug.test.Client 现在可以运行缓冲的应用程序,在这种情况下,应用程序将自动正确关闭。
固定的 Headers.set ()。之前导致了头段重复。
固定的 Headers.pop (349)。未正确处理默认参数。
修复了中的未绑定本地错误 create_environ (351)
Headers 现在与wsgiref更兼容。
Template.render 现在接受多个。
对python 2.3的放弃支持
版本0.4¶
2008年11月23日发布,代号为Schraubenzieher。
Client 支持空的 data 现在参数。
修正了一个错误 Response.application 这使得它不可能用作方法修饰器。
会话系统现在应该在appengine上工作了
安全cookie现在可以在具有不同CPU架构的负载平衡环境中正常工作。
CacheControl.no_cache 和 CacheControl.private 行为改变以反映HTTP RFC的可能性。将这些属性设置为 None 或 True 现在将值设置为“空值”。文档中有更多详细信息。
固定的 werkzeug.contrib.atom.AtomFeed.__call__ .(338)
BaseResponse.make_conditional 现在总是回来 self .以前,它不适用于邮件请求等。
修正了布尔属性处理中的错误 html 和 xhtml .
为调试器的Pastebin功能添加了优雅的错误处理。
向添加了一个类似列表的接口 Headers (切片和索引现在工作)
修正了一个错误 __setitem__ 方法 Headers 换钥匙时没有把所有钥匙都取下来。
补充 remove_entity_headers 从标题列表中删除所有实体标题(或 Headers 对象)
现在响应自动调用 remove_entity_headers 如果状态代码是304。
修正了一个错误 Href 查询参数处理。以前调用的最后一项 Href 如果是听写的话,处理不当。
头现在支持 pop 操作以更好地使用环境属性。
0.3.1版¶
(Bugfix版本,2008年6月24日发布)
修复了安全问题 werkzeug.contrib.SecureCookie .
版本0.3¶
2008年6月14日发布,代号为eur325cat6。
添加了在URL路由中重定向的支持。
补充 Authorization 和 AuthorizationMixin
补充 WWWAuthenticate 和 WWWAuthenticateMixin
补充 parse_list_header
补充 parse_dict_header
补充 parse_authorization_header
补充 parse_www_authenticate_header
补充 _get_current_object 方法到 LocalProxy 物体
补充 parse_form_data
MultiDict , CombinedMultiDict , Headers 和 EnvironHeaders 现在引发特殊键错误,这是 BadRequest 因此,如果您没有捕捉到它们,它们会给出有意义的HTTP响应。
增加了对替代编码错误处理和 HTTPUnicodeError 它(如果没有被抓到)的行为就像 BadRequest .
补充 BadRequest.wrap .
添加了对sharedatamiddleware的etag支持,并添加了禁用缓存的选项。
固定的 is_xhr 在请求对象上。
修复了URL适配器的错误处理 dispatch 方法。(318)
修正了错误 SharedDataMiddleware .
固定的 Accept.values .
EnvironHeaders 立即包含内容类型和内容长度
url_encode 将传递给它的dict中的列表和元组视为同一键的多个值,这样就不必传递 MultiDict 到函数。
补充 validate_arguments
补充 BaseRequest.application
改进了对python 2.3的支持
run_simple 接受 use_debugger 和 use_evalex 现在参数,比如 make_runserver 来自脚本模块的工厂函数。
这个 environ_property 现在默认为只读
现在可以将请求初始化为“浅”请求,如果请求对象尝试使用输入流,则会导致运行时错误。
版本0.2¶
2008年2月14日发布,代号Faustkeil。
补充 AnyConverter 到路由系统。
补充 werkzeug.contrib.securecookie
例外情况有
get_response()
返回响应对象的方法修正了路径排序错误(293),谢谢托马斯·约翰森。
BaseReporterStream 现在是Werkzeug控制模块的一部分。从Werkzeug 0.3起,你必须从那里进口。
补充 DispatcherMiddleware .
RequestRedirect 现在是的子类 HTTPException 并使用301状态代码而不是302。
url_encode 和 url_decode 现在也可以选择将密钥视为Unicode字符串。
werkzeug.script 现在布尔参数的调用方格式不同。
更名 lazy_property 到 cached_property .
补充 import_string .
添加的是请求对象的属性。
补充 empty() 路由规则的方法。
补充 werkzeug.contrib.profiler .
补充 extends 到 Headers .
补充 dump_cookie 和 parse_cookie .
补充 as_tuple 到 Client .
补充 werkzeug.contrib.testtools .
补充 werkzeug.unescape
补充 BaseResponse.freeze
补充 werkzeug.contrib.atom
httpExceptions接受一个参数 description 现在,它将覆盖默认描述。
这个 MapAdapter 现在具有路径信息的默认值。如果你使用 bind_to_environ 你以后不必经过这条路。
用于dev服务器的wsgiref子类werkzeug不再使用直接sys.stderr日志记录,而是使用名为“werkzeug”的日志记录程序。
实施 Href .
实施 find_modules
将请求和响应对象重构为基本对象、mixin和实现所有mixin的全功能子类。
添加了简单的用户代理分析器
Werkzeug的路由提升 MethodNotAllowed 现在,如果它与一个规则匹配,但方法不同。
许多修复和小的改进
版本0.1¶
2007年12月9日发布,代号为Wictorinoxger。
初始释放