私はピラミッドとトラバーサルの概念に不慣れです。私はトラバーサルで動作する基本的なオブジェクトモデルを持っていますが、オブジェクトは場所を認識しないため、このページhttp://docs.pylonsproject.org/projects/pyramid/en/1.0-branch/narr/にあるピラミッドのドキュメントを読んでください。 resources.html#location-awareは、pyramid_traversalwrapperの使用について説明しています。
指示に従って、メインに次の行を追加しました。
config = Configurator(root_factory=Root)
config.registry.registerAdapter(ModelGraphTraverser, (Interface,),
ITraverser)
残りのトラバーサルツリーオブジェクトは次のようになります。
class Root(object):
def __init__(self, request):
pass
def __getitem__(self, key):
if key == 'users':
return UserList()
raise KeyError
class UserList():
def __getitem__(self, key):
users = {'a':None,'b':None, 'c':None}
if key in users:
return User()
raise KeyError
class User(object):
def __init__(self):
pass
def __getitem__(self, key):
if (key == 'channels'):
return Channels()
def GET(self):
return Response("got user")
コードを実行すると、URLを解決するときにModelGraphTraverserが使用されているように見えますが、andなどを知っている場合のように、モデルの場所を認識させるにはどうすればよい__parent__
です__name__
か?ラッパークラスを追加する必要がありますか?もしそうなら、どうすればそれを行うことができますか?pyramid_traversalwrapperは、管理__parent__
と労力を軽減することになって__name__
いますが、それをどのように利用するかわかりません。