У меня есть other.package
, регистрирующее представление my_view
.Затем я пытаюсь заменить это представление определенным в моем this.package
.
<browser:page
for="other.package.interfaces.IBarClass"
name="my_view"
class="this.package.views.FooClass"
permission="zope2.View"
layer="this.package.interfaces.IThisPackageContentLayer"
/>
. По какой-то причине my_view
не переопределяется.Я думаю, что это приоритет слоев, но я понятия не имею, как это исправить.Любое предложение?
Если я переименую представление (name="my_view_new"
), оно будет работать как положено.Но если используется то же имя, оригинал, кажется, имеет приоритет.Как я могу это изменить?
ОБНОВЛЕНИЕ : это касается приоритета слоя:
(Pdb) self.request.__provides__.__iro__[13]
<InterfaceClass other.package.interfaces.layer.IOriginalLayer>
(Pdb) self.request.__provides__.__iro__[14]
<InterfaceClass this.package.content.interfaces.IThisPackageContentLayer>
Вы можете проверить активированные слои из объекта HTTP-запроса, посмотрев наself.request. обеспечивает . иро .Слои оцениваются от нулевого индекса (самый высокий приоритет) до последнего индекса (самый низкий приоритет). (источник)
Итак, проблема в том, как я могу расставить приоритеты для слоя?