import cherrypy
class Root:
@cherrypy.expose
def default(self, *url_parts, **params):
req = cherrypy.request
print(url_parts)
body = [
'Page served with method: %s' % req.method,
'Query string from req: %s' % req.query_string,
'Path info from req: %s' % req.path_info,
'Params (query string + body for POST): %s' % params,
'Body params (only for POST ): %s' % req.body.params
]
if url_parts: # url_parts is path_info but divided by "/" as a tuple
if url_parts[0] == 'foobar228':
body.append( 'Special foobar page')
else:
body.append('Page for %s' % '/'.join(url_parts))
else:
body.append("No path, regular page")
return '<br>\n'.join(body)
cherrypy.quickstart(Root())
使用默认方法。这里有一个例子。在
url段成为位置参数,任何查询字符串(
?foo=bar
)都是该方法关键字参数的一部分,POST
方法的主体参数也包含在关键字参数中(在本例中,在方法定义中的名称为params
)。在特殊的调度方法
调度是一种特殊的方法,您可以在任何一个控制器中声明,在CherryPy处理剩余的段之前对它们进行按摩。这为您提供了删除、添加或以其他方式处理任何段的能力,甚至可以完全更改其余部分。在
注意控制器是如何定义cp_dispatch的,它只接受一个参数,将URL路径信息分解成多个片段。在
该方法可以检查和操作段列表,在任何位置删除或添加新段。然后将新的段列表发送给调度程序,调度程序将使用它来定位适当的资源。在
在上面的示例中,您应该能够转到以下URL:
http://localhost:8080/nirvana/
http://localhost:8080/nirvana/albums/nevermind/
/nirvana/段与乐队关联,/nevermind/段与专辑相关。在
为了实现这一点,我们的\u cp_dispatch方法的工作原理是,默认的分派器将url与页面处理程序签名及其在处理程序树中的位置相匹配。在
取自docs
相关问题 更多 >
编程相关推荐