Cherrypy._Helper模块¶
CP应用程序的帮助器功能。
- class cherrypy._helper._ClassPropertyDescriptor(fget, fset=None)[源代码]¶
基类:
object
描述基于只读类的属性。
将类方法修饰的函数转换为该类类型的只读属性(意味着不能设置值)。
- 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;即,它将以斜线开头。