我试试这个:tal:define="terms python:context.portal_vocabularies.getVocabularyByName('a_vocabulary').items()"
结果是
Unauthorized: You are not allowed to access 'portal_vocabularies' in this context
知道如何在页面模板中获取词汇量吗?
(它适用于经过身份验证的用户。该错误仅适用于匿名用户。)
答案 0 :(得分:2)
不确定这是最简单的...添加了浏览器视图:
class AVocabulary(BrowserView):
def __call__(self):
terms = self.context.portal_vocabularies.getVocabularyByName(
'a_vocabulary').items()
res = [(t[0], t[1].title) for t in terms]
return res
它是公开的
<browser:page
name="get_a_vocabulary"
for="*"
permission="zope2.View"
class=".views.AVocabulary"
/>
它正在运作:
tal:define="options python:context.restrictedTraverse('get_a_vocabulary')"