有没有办法在@view_config level
?
我想为一个方法使用多个@view_config
装饰器,但是传递一个参数来指示哪一个已被使用:
@view_config(renderer="shape.mak", route_name='circle_route')
@view_config(renderer="shape.mak", route_name='triangle route')
def new_model(self, fparams=None, ppath=None):
#here, I'd like to capture a variable that tells me whether the cirlce or triangle route was used to access this method
我意识到我可以巩固我的路线(例如有一个形状路线)并为形状类型添加额外的参数,但我想知道我的选择。
答案 0 :(得分:1)
视图配置旨在声明。这意味着视图不知道它是如何呈现的,每次只返回相同的字典格式,所选的渲染器将根据谓词处理它。话虽如此,如果你愿意,你可以打破这种模式,因为你可以在custom_predicate中做任何你想做的事。
def set_shape_predicate(shape):
def predicate(context, request):
request.shape = shape
return True
return predicate
@view_config(renderer="shape.mak", route_name='circle_route', custom_predicates=[set_shape_predicate('circle')])
@view_config(renderer="shape.mak", route_name='triangle route', custom_predicates=[set_shape_predicate('triangle')])
def new_model(self):
# request.shape will be 'circle' or 'triangle'
您还可以检查request.matched_route.name
并将其与网址分配方案中的每个路由名称('circle_route'
或'triangle_route'
)进行比较。