【发布时间】:2020-10-03 16:30:10
【问题描述】:
从pyramid documentation 来看,配置器的add_view 上存在一个attr 参数,它指出:
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 下路由的所有方法。不幸的是,这不起作用。这样做的正确方法似乎是:
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 行?或者更理想的是,每个 class 1 行?
【问题讨论】:
标签: pyramid