cherrypy._cptools模块

CherryPy工具。“工具”是适用于CP的任何帮助器。

工具通常设计为以多种方式使用(尽管有些工具可能只提供一种方式,如果他们选择的话):

库调用

所有工具都是可调用的,可以在需要的任何地方使用。参数很简单,应该在文档字符串中详细说明。

函数装饰符

所有工具在被调用时都可以用作装饰器,用于配置单独的CherryPy页面处理程序(CherryPy树上的方法)。也就是说,“@tools.anytool()”应该通过修饰函数的_cp_config属性“打开”该工具。

CherryPy配置

如果工具公开了一个“_setup”可调用对象,则每次请求都会调用它一次(如果通过config“打开”了该功能)。

工具可以实现为具有命名空间的任何对象。内置通常是Tools.Tool类的模块或实例。

class cherrypy._cptools.CachingTool(point, callable, name=None, priority=50)[源代码]

基类:cherrypy._cptools.Tool

CherryPy的缓存工具。

_setup()[源代码]

将缓存挂接到cherrypy.request中。

_wrapper(**kwargs)[源代码]
class cherrypy._cptools.ErrorTool(callable, name=None)[源代码]

基类:cherrypy._cptools.Tool

用于替换默认请求的工具。ERROR_RESPONSE。

_setup()[源代码]

将此工具挂接到cherrypy.request中。

当工具在config中“打开”时,标准CherryPy请求对象将自动调用此方法。

_wrapper()[源代码]
class cherrypy._cptools.HandlerTool(callable, name=None)[源代码]

基类:cherrypy._cptools.Tool

称为“在Main之前”的工具,它可以跳过正常的处理程序。

如果工具成功处理请求(通过设置response.body),则IF应返回True。这将导致CherryPy跳过任何“普通”页面处理程序。如果该工具没有处理请求,它应该返回false,告诉CherryPy继续并调用正常的页面处理程序。如果该工具被声明为页面处理程序(请参阅“Handler”方法),则返回False将引发NotFound。

_setup()[源代码]

将此工具挂接到cherrypy.request中。

当工具在config中“打开”时,标准CherryPy请求对象将自动调用此方法。

_wrapper(**kwargs)[源代码]
handler(*args, **kwargs)[源代码]

将此工具用作CherryPy页处理程序。

例如::

class Root:
    nav = tools.staticdir.handler(section="/nav", dir="nav",
                                  root=absDir)
class cherrypy._cptools.HandlerWrapperTool(newhandler, point='before_handler', name=None, priority=50)[源代码]

基类:cherrypy._cptools.Tool

将request.handler包装在所提供的包装器函数中的工具。

‘newhandler’参数必须是接受‘NEXT_HANDLER’参数的处理程序包装函数 *args**kwargs 。与所有页面处理程序函数一样,它必须返回一个迭代数才能用作cherrypy.response.body。

例如,要允许您的“内部”页面处理程序返回字典,然后将这些字典内插到模板中::

def interpolator(next_handler, *args, **kwargs):
    filename = cherrypy.request.config.get('template')
    cherrypy.response.template = env.get_template(filename)
    response_dict = next_handler(*args, **kwargs)
    return cherrypy.response.template.render(**response_dict)
cherrypy.tools.jinja = HandlerWrapperTool(interpolator)
callable(*args, **kwargs)[源代码]
class cherrypy._cptools.SessionAuthTool(callable, name=None)[源代码]

基类:cherrypy._cptools.HandlerTool

class cherrypy._cptools.SessionTool[源代码]

基类:cherrypy._cptools.Tool

CherryPy的会话工具。

sessions.locking

当为“IMPLICIT”(默认值)时,会话将在运行页面处理程序之前为您锁定。

如果为“Early”,则在读取请求正文之前将锁定会话。出于安全原因,这在默认情况下是关闭的;例如,大型上载将对会话进行挡路操作,从而拒绝使用AJAX进度计时器 (issue )。

如果为‘EXPLICIT’(或任何其他值),则需要在使用会话数据之前自己调用cherrypy.session.quisition_lock()。

_lock_session()[源代码]
_setup()[源代码]

将此工具挂接到cherrypy.request中。

当工具在config中“打开”时,标准CherryPy请求对象将自动调用此方法。

regenerate()[源代码]

删除当前会话并创建一个新会话(使用新ID)。

class cherrypy._cptools.Tool(point, callable, name=None, priority=50)[源代码]

基类:object

用于Cherrypy请求处理挂钩的注册函数。

帮助(tool.callable)应该提供有关此工具的更多信息。

_merged_args(d=None)[源代码]

返回此工具的配置条目字典。

_setargs()[源代码]

将函数参数名称复制到obj属性。

_setup()[源代码]

将此工具挂接到cherrypy.request中。

当工具在config中“打开”时,标准CherryPy请求对象将自动调用此方法。

namespace = 'tools'
property on
class cherrypy._cptools.Toolbox(namespace)[源代码]

基类:object

工具的集合。

此对象还充当其自身的配置命名空间处理程序。自定义工具箱应该添加到每个应用程序的工具箱字典中。

register(point, **kwargs)[源代码]

返回一个在给定钩点处注册函数的修饰符。

class cherrypy._cptools.XMLRPCController[源代码]

基类:object

XML-RPC的控制器(页面处理程序集合)。

要使用它,请让您的控制器子类该基类(它将为您打开该工具)。

您还可以提供以下可选配置条目:

tools.xmlrpc.encoding: 'utf-8'
tools.xmlrpc.allow_none: 0

XML-RPC是HTTP上的一个相当不连续的层;必须首先根据URL执行向适当处理程序的分派,然后必须根据请求正文中指定的RPC方法执行第二个分派步骤。它还允许在URL中使用多余的“/RPC2”前缀,在正文中提供自己的处理程序参数,并且在找不到所需方法时需要200OK“错误”响应,而不是404。

因此,不能仅通过工具为CherryPy实现XML-RPC。该控制器充当前半部分的分派目标(基于URL);然后它从请求主体读取RPC方法,并基于该方法执行自己的第二个分派步骤。它还读取主体参数,并在出错时返回故障。

XMLRPCDispatcher去掉任何/RPC2前缀;如果您没有在URL中使用/RPC2,您可以安全地跳过打开XMLRPCDispatcher。否则,您需要在config::中使用声明

request.dispatch: cherrypy.dispatch.XMLRPCDispatcher()
_cp_config = {'tools.xmlrpc.on': True}
default(*vpath, **params)[源代码]
cherrypy._cptools._getargs(func)[源代码]

返回给定函数的所有静电参数的名称。