Cherrypy._Helper模块

CP应用程序的帮助器功能。

class cherrypy._helper._ClassPropertyDescriptor(fget, fset=None)[源代码]

基类:object

描述基于只读类的属性。

将类方法修饰的函数转换为该类类型的只读属性(意味着不能设置值)。

cherrypy._helper.classproperty(func)[源代码]

类似于实现静电类属性的类方法的装饰器。

cherrypy._helper.expose(func=None, alias=None)[源代码]

公开函数或类。

(可选)提供一个别名或一组别名。

cherrypy._helper.normalize_path(path)[源代码]

将给定路径从相对形式解析为绝对形式。

cherrypy._helper.popargs(*args, **kwargs)[源代码]

装饰派工。

(cherrypy.dispatch.dispatcher.dispatch方法名称)

可选关键字参数:handler=(对象或函数)

提供一个_cp_调度函数,该函数将路径段弹出到指定名称下的cherrypy.request.params中。然后将调度转发到下一个vpath元素。

请注意,应用popargs的类的任何现有(和公开)成员函数都将重写该参数的值。例如,如果在用popargs修饰的类上有一个名为“list”的方法,那么访问“/list”将调用该函数,而不是将其作为请求的参数弹出。此限制适用于所有的调度功能。绕过这个限制的唯一方法是创建一个“空白类”,它的唯一功能是提供cp_调度。

如果参数后面有path元素,或者请求的参数多于vpath中可用的参数,那么'handler'关键字参数指定下一个对象来处理参数化的请求。如果未指定处理程序或处理程序为“无”,则使用self。如果处理程序是函数而不是实例,那么将使用指定的参数调用该函数,并且该函数的返回值将用作下一个对象,而不是将参数添加到cherrypy.request.args。

此装饰器可通过以下两种方式之一使用:

作为班级装饰师:

@cherrypy.popargs('year', 'month', 'day')
class Blog:
    def index(self, year=None, month=None, day=None):
        #Process the parameters here; any url like
        #/, /2009, /2009/12, or /2009/12/31
        #will fill in the appropriate parameters.

    def create(self):
        #This link will still be available at /create.
        #Defined functions take precedence over arguments.

或者作为一个班级的成员:

class Blog:
    _cp_dispatch = cherrypy.popargs('year', 'month', 'day')
    #...

处理程序参数可用于将参数与内置函数混合。例如,以下设置允许在日、月和年级别执行不同的活动:

class DayHandler:
    def index(self, year, month, day):
        #Do something with this day; probably list entries

    def delete(self, year, month, day):
        #Delete all entries for this day

@cherrypy.popargs('day', handler=DayHandler())
class MonthHandler:
    def index(self, year, month):
        #Do something with this month; probably list entries

    def delete(self, year, month):
        #Delete all entries for this month

@cherrypy.popargs('month', handler=MonthHandler())
class YearHandler:
    def index(self, year):
        #Do something with this year

    #...

@cherrypy.popargs('year', handler=YearHandler())
class Root:
    def index(self):
        #...
cherrypy._helper.url(path='', qs='', script_name=None, base=None, relative=None)[源代码]

为给定路径创建绝对URL。

如果“path”以斜线(“/”)开头,则返回

(基础+脚本名称+路径+qs)。

如果不是以斜线开头,则返回

(基础+脚本名称 [+ request.path_info] +路径+qs)。

如果script_name为none,则将使用cherrypy.request查找脚本_name(如果可用)。

如果base为none,将使用cherrypy.request.base(如果可用)。请注意,您可以使用cherrypy.tools.proxy来更改这一点。

最后,请注意,此函数可以通过不传递参数来获取当前请求路径(减去querystring)的绝对URL。如果调用url(qs=cherrypy.request.query_string),则应获取原始浏览器url(假定没有内部重定向)。

如果没有或没有提供relative,则将使用request.app.relative_URL(如果可用,则为false)。如果为false,则输出将是绝对URL(包括方案、主机、vhost和脚本名称)。如果为真,则输出将是相对于当前请求路径的URL,可能包括“..”原子。如果relative是字符串“server”,则输出将是相对于服务器根目录的URL;即,它将以斜线开头。