来自 金字塔文件,存在一个 attr
配置器的参数 add_view
其中指出:
该决议规定:
attr
值允许您改变用于获取响应的方法属性。 例如,如果你的视图是一个类,而该类有一个名为index
而你想用这个方法代替类的__call__
方法来返回响应,你会说attr="index"
的视图配置中。
考虑到这一点,我想把所有请求都路由在 /myrequest
归类 MyRequest
. 给出以下类。
@view_defaults(renderer='json')
class MyHandler(object):
def __init__(self, request):
self.request = request
def start(self):
return {'success': True}
def end(self):
return {'success': True}
似乎可以在配置中添加以下内容:
config.add_view(MyHandler, '/myrequest', attr='start')
config.add_view(MyHandler, '/myrequest', attr='end')
以此类推,在MyHandler下为所有我想路由的方法添加这行: 不幸的是,这并不奏效。正确的方法似乎是:在MyHandler下添加以下几行:等等。
config.add_route('myroutestart', '/myroute/start')
config.add_route('myrouteend', '/myroute/end')
config.add_view(MyHandler, attr='start', route_name='myroutestart')
config.add_view(MyHandler, attr='end', route_name='myrouteend')
这似乎是一个非常多的模板。有没有办法让每个路由减少到1行?或者更理想的是,每个 阶层?
例子#4在 路线和视图示例 来自Pyramid Community Cookbook v0.2,Pyramid for Pylons Users,提供了以下内容。
# Pyramid
config.add_route("help", "/help/{action}")
@view_config(route_name="help", match_param="action=help", ...)
def help(self): # In some arbitrary class.
...
虽然这本食谱中提到pyramid_handlers是其中的一个选项,但文章中的 "超越金字塔处理机" 由Pyramid的维护者之一鼓励使用Pyramid的配置。