Во-первых, вы хотите, чтобы ваш корневой ресурс возвращал различные типы ресурсов из __getitem__
:
class Root(object):
def __getitem__(self, key):
if key in ['Red', 'Green']:
return ColorCategory(key)
elif key in ['4', '5']:
return SizeCategory(key)
class ColorCategory(object):
...
class SizeCategory(object):
...
Затем в вашем __init__.py вы захотите настроить различные представления для вашего другого ресурса.типы (или типы контекста):
config.add_view('myapp.views.color',
context='myapp:resources.ColorCategory', name='',
renderer='myapp:templates/color.mak')
config.add_view('myapp.views.size',
context='myapp:resources.SizeCategory', name='',
renderer='myapp:templates/size.mak')
Способ, которым это будет работать, заключается в том, что при получении определенного URL-адреса Traversal будет искать определенный контекст и просматривать имя.Для domain.com/Red контекст будет ColorCategory('Red')
(потому что это то, что возвращает ваш корневой ресурс), а имя представления будет ''
(потому что путь полностью используется после поиска этого контекста).Затем пирамида будет использовать тип контекста и имя представления в качестве фильтров для поиска настроенного представления и шаблона.