cherrypy.lib.cptools模块

内置cherrypy工具的功能。

class cherrypy.lib.cptools.MonitoredHeaderMap[源代码]

基类:cherrypy.lib.httputil.HeaderMap

transform_key(key)[源代码]
class cherrypy.lib.cptools.SessionAuth[源代码]

基类:object

断言用户已登录。

_debug_message(template, context={})[源代码]
anonymous()[源代码]

为匿名用户提供临时用户名。

check_username_and_password(username, password)[源代码]
debug = False
do_check()[源代码]

断言用户名。引发重定向,或者在处理请求时返回true。

do_login(username, password, from_page='..', **kwargs)[源代码]

登录。可能引发重定向,或者在处理请求时返回true。

do_logout(from_page='..', **kwargs)[源代码]

注销。可能引发重定向,或者在处理请求时返回true。

login_screen(from_page='..', username='', error_msg='', **kwargs)[源代码]
on_check(username)[源代码]
on_login(username)[源代码]
on_logout(username)[源代码]
run()[源代码]
session_key = 'username'
cherrypy.lib.cptools.accept(media=None, debug=False)[源代码]

返回客户端的首选媒体类型(从给定的内容类型)。

如果“介质”为“无”(默认),则不执行任何测试。

如果提供了“media”,则它应该是当前资源可以发出的内容类型值(字符串)或值(字符串列表或元组)。客户机的可接受媒体范围(如accept-request头中声明的)将按照这些内容类型值进行匹配;返回第一个这样的字符串。也就是说,返回值始终是'media'参数中提供的字符串之一(如果'media'为none,则为none)。

如果找不到匹配项,则引发httperror 406(不可接受)。请注意,大多数Web浏览器都会发送 / 作为(低质量)可接受的媒体范围,应该与任何内容类型相匹配。此外,“…如果不存在接受头字段,则假定客户端接受所有媒体类型。”

匹配类型首先按照客户端首选项的顺序进行检查,然后按照给定的“媒体”值的顺序进行检查。

请注意,此函数不支持接受参数(除了“q”)。

cherrypy.lib.cptools.allow(methods=None, debug=False)[源代码]

如果request.method不在方法中,则引发405(默认 ['get'、'head'] )

给定的方法不区分大小写,并且可以是任何顺序。如果只允许一个方法,则可以提供单个字符串;如果多个方法,则提供字符串列表。

不管当前方法是否被允许,这也会发出一个包含给定方法的“allow”响应头。

cherrypy.lib.cptools.autovary(ignore=None, debug=False)[源代码]

根据request.header访问自动填充vary响应头。

cherrypy.lib.cptools.convert_params(exception=<class 'ValueError'>, error=400)[源代码]

基于函数注释转换请求参数,并进行错误处理。

例外

要捕获的异常类。

地位

失败时返回到客户端的HTTP错误代码。

cherrypy.lib.cptools.flatten(debug=False)[源代码]

将response.body包装在一个生成器中,该生成器递归地迭代主体。

这允许cherrypy.response.body由“嵌套生成器”组成,即生成生成器的一组生成器。

cherrypy.lib.cptools.ignore_headers(headers=('Range',), debug=False)[源代码]

删除字段名包含在“headers”中的请求头。

这是一个在特定HTTP服务器后面工作的有用工具;例如,Apache复制了CP对“range”头所做的工作,并将加倍截断响应。

cherrypy.lib.cptools.log_hooks(debug=False)[源代码]

将request.hooks写入cherrypy错误日志。

cherrypy.lib.cptools.log_request_headers(debug=False)[源代码]

将请求头写入cherrypy错误日志。

cherrypy.lib.cptools.log_traceback(severity=40, debug=False)[源代码]

将上一个错误的跟踪记录写回Cherrypy错误日志。

cherrypy.lib.cptools.proxy(base=None, local='X-Forwarded-Host', remote='X-Forwarded-For', scheme='X-Forwarded-Proto', debug=False)[源代码]

更改基本URL(scheme://host [港口] [/path] )

用于运行apache、lighttpd或其他HTTP服务器后面的CP服务器。

对于apache和lighttpd,您应该将“local”参数保留为默认值“x-forwarded-host”。对于Squid,您可能希望设置tools.proxy.local='origin'。

如果希望新的request.base包含路径信息(不仅仅是主机),则必须显式将base设置为完整的基路径,并将“local”设置为“”,以便x-forwarded-host请求头(从不包含路径信息)不会覆盖它。无论如何,“base”的值不能以斜线结尾。

如果“remote”参数指定的头有效,将重写cherrypy.request.remote.ip(客户端的IP地址)。默认情况下,“远程”设置为“x-forwarded-for”。如果不想重写remote.ip,请将“remote”参数设置为空字符串。

cherrypy.lib.cptools.redirect(url='', internal=True, debug=False)[源代码]

将InternalRedirect或HttpRedirect提升到给定的URL。

cherrypy.lib.cptools.referer(pattern, accept=True, accept_missing=False, error=403, message='Forbidden Referer header.', debug=False)[源代码]

如果引用头与给定模式不匹配,则引发httperror。

模式

用于测试引用的正则表达式模式。

接受

如果为真,则引用者必须与模式匹配;如果为假,则引用者不得与模式匹配。

accept_missing

如果为真,则允许没有引用头的请求。

错误

失败时返回到客户端的HTTP错误代码。

消息

失败时要包含在响应正文中的字符串。

cherrypy.lib.cptools.response_headers(headers=None, debug=False)[源代码]

在响应上设置头。

cherrypy.lib.cptools.session_auth(**kwargs)[源代码]
cherrypy.lib.cptools.trailing_slash(missing=True, extra=False, status=None, debug=False)[源代码]

如果路径信息有(缺少多余)尾随斜杠,则重定向。

cherrypy.lib.cptools.validate_etags(autotags=False, debug=False)[源代码]

验证当前etag是否匹配,如果没有匹配头。

如果autotags为true,则将从响应主体的MD5哈希中提供etag响应头值(除非某些其他代码已经提供了etag头)。如果为false(默认值),etag将不是自动的。

警告:自动标记功能不是为允许get以外的方法的URL设计的。例如,如果对同一个URL的发布没有返回任何内容,那么自动etag将是不正确的,以一种可能具有破坏性的方式破坏了实体标记的基本用途。同样,如果提升304未修改,响应主体将为空,etag散列将不正确,应用程序将中断。参见 RFC 2616 第14.24条

cherrypy.lib.cptools.validate_since()[源代码]

验证当前最后一次修改是否针对自标题修改。

如果没有代码设置最后修改的响应头,则不会执行任何验证。