2015-06-04 3 views
4

Учитывая, что Products.Five является интеграционным слоем, чтобы сделать Zope Component Architecture (ZCA), используемых в Plone: ​​Может ли zope.publisher.browser.BrowserView использоваться в Plone?

  • Можно ли использовать zope.publisher.browser в Plone или я должен использовать Products.Five .browser для импорта BrowserView?

Бывший производит отслеживающий:

2015-06-04 14:47:02 ERROR Zope.SiteErrorLog 1433443622.720.549321919726 http://localhost:8080/Plone/@@hello Traceback (innermost last): Module ZPublisher.Publish, line 138, in publish Module ZPublisher.mapply, line 77, in mapply Module ZPublisher.Publish, line 48, in call_object Module zope.publisher.browser, line 968, in __call__ NotImplementedError: Subclasses should override __call__ to provide a response body

В то время как последний «просто работает»

+2

Кто голосует за это и почему? Пожалуйста, не голосуйте без включения конструктивного комментария. Спасибо – aclark

ответ

4

Вы должны использовать Products.Five.browser.BrowserView, потому что отвечает за закупорки вид в приобретении, следовательно (среди прочих) в инфраструктуре безопасности Zope 2.

Он наследует от AcquisitionBBB.

Безопасность Zope 2 основана на приобретении для настройки разрешений только в корне дерева контента.

+0

Спасибо Godefroid! – aclark

+1

Смутно, я использую zope.publisher.browser.BrowserPage здесь: http://stackoverflow.com/a/23779925/185820. Это сбивает с толку на двух уровнях: 1.) В чем разница между BrowserView и BrowserPage и почему нам нужны два похожих класса в zope.publisher? И 2.) Почему я могу успешно использовать BrowserPage, но не BrowserView? – aclark

+2

Мой ответ выше говорит, почему вы должны использовать 'Five.BrowserView', а не почему ваш пример терпит неудачу. Я предполагаю, что в приведенном выше примере вы зарегистрировали zcml 'browser: view' с классом' zope.publisher.browser.BrowserPage'. Однако издателю Zope 2 требуется класс, определяющий метод '__call__'. –

Смежные вопросы