Python 获取金字塔中的匹配视图
我有金字塔服务,代码如下:Python 获取金字塔中的匹配视图,python,pyramid,Python,Pyramid,我有金字塔服务,代码如下: @view_defaults(route_name="result", context=Result, renderer="json") class ResultView(RESTView): """ Rest view for exercise results """ @view_config(request_method='GET', permission='view', role="owner") @view_confi
@view_defaults(route_name="result", context=Result, renderer="json")
class ResultView(RESTView):
"""
Rest view for exercise results
"""
@view_config(request_method='GET', permission='view', role="owner")
@view_config(request_method='GET', permission='view', role="admin")
@view_config(request_method='GET', permission='view', role="gadmin")
@schema(Result)
@log("get result")
def get(self):
"""
Gets result
"""
return self.get.__schema__.dictirialize(self.context, prepare_json=True)
......
如何在
ResultView.get
中获得匹配的视图?我通过创建一个自定义视图装饰器来解决这个问题,该装饰器在请求中附加视图id
。根据激活的视图配置调用此装饰器。以下是一个例子:
@view_config(request_method='GET', role="owner", permission="view", decorator=view_id("owner"))
@view_config(request_method='GET', role="admin", permission="view", decorator=view_id("admin"))
@view_config(request_method='GET', permission="view")
@schema(User, excludes=('password', 'deleted'), key="owner")
@schema(User, key="admin")
@log("get user")
def get(self):
return self.get.__schema__[self.request.id].dictify(self.context)
还有装饰师:
def view_id(id):
"""
Pyramid view decorator that remembers the view id and assigns it to request
"""
def _view_id(view):
def view_callable(context, request):
request.id = id
return view(context, request)
return view_callable
return _view_id
它帮我完成了任务。你在这里找什么?匹配的角色?否调用函数时匹配的视图配置对象。我开始意识到我可能必须采取不同的方法。没有“视图配置”对象,这感觉像是XY问题