Objekte, die üblicherweise in jeder Ansicht der Pyramid-App verwendet werden, können mithilfe des Root-Objektmechanismus intelligent definiert werden.
class RootResource(object):
u"""Anwendungsstammressource
Da Traversal nicht verwendet wird, wird es unverändert als Kontext an View übergeben.
"""
__name__ = None
__parent__ = None
__acl__ = []
def __init__(self, request):
self._repos = {
'user': UserRepository(),
}
@property
def repos(self):
u"""Jedes Repository wird über ein Wörterbuch bereitgestellt"""
return self._repos
Wenn Sie es an das Argument root_factory in der Anwendungsdefinition übergeben,
config = Configurator(
settings=settings,
root_factory="foo.resource.RootResource"
)
Sie können wie folgt auf Repos zugreifen:
@view_config(route_name="user_detail")
def user_detail(context, request):
user_repo = context.repos['user']
user = user_repo.getById(...)
return ...
Recommended Posts