トラバーサルと全リソースとコンテキストの概念を私のquestionから理解したので、ドキュメントに記載されているようにハイブリッドルーティングを使ったチュートリアルの例を試しました。次add_route
構成でhttp://example.com/product/123/edit
::私は供給したときに ピラミッドトラバーサルとURLディスパッチと異なるルート
-
は、それがあることを意味しています、私は、次のURLを通過した場合config = Configurator(settings=**settings, root_factory=RootFactory) config.add_route('product_edit', '/product/{pid}/edit', factory=ProductFactory, traverse='/{pid}/edit') config.add_view(route_name='product_edit', name='edit', renderer='edit.mako')
:いない場合、私は一種のいくつかのマイナーな問題のためにそれを理解します製品ファクトリをadd_routeファンクションに追加すると、ルートリソースファクトリが製品ファクトリに変更されます(したがって、製品ファクトリは新しいルートリソースになりました)。
ルートリソースが実際に私がProductFactoryの
__parent__
&__name__
の属性を設定するだろうか、トラバーサルのためProductFactoryに変更された場合は?__parent__
がNone
になるように見えるので、私は正しいですか?
ここに私のProductFactoryのコードは次のとおりです。
class ProductFactory(object):
__name__ = 'product'
__parent__ = None
def __getitem__(self, key):
if key.isnumber():
try:
p = sess_.query(model.Product).filter(pid=key).one()
except:
raise DBException()
if p:
return p
else:
return KeyError