您可以通过执行以下操作在 kotti 中为内容类型添加“视图”:
from kotti_mysite.views import poll_view
config.add_view(
poll_view,
context=Poll,
name='view',
permission='view',
renderer='kotti_mysite:templates/poll.pt',
)
(更多详情: http: //kotti.readthedocs.org/en/latest/first_steps/tut-2.html)
您也可以拥有多个视图,并使用“设置默认视图”,但有时拥有几个具有非常相似 url 的相似视图会很方便。
例如,在 plone 中,拥有这样的 url 结构是微不足道的:
- /blah/item/ <--- 普通视图
- /blah/item/json <--- 项目的 Json 版本
- /blah/item/pdf <--- 项目的 PDF 下载
您可以...在 kotti 中做类似的事情,方法是使用您创建的视图并根据 get/post 参数渲染不同的内容,但这很混乱,坦率地说,相当垃圾。
我发现的唯一解决方案是拥有一个具有 json 渲染器的自定义内容类型“JsonView”,并将其添加为父对象的子对象,它的渲染器会查找父内容并进行渲染。
但是,这样做需要您为所需类型的每个实例手动创建一个“JsonView”子级,这也相当麻烦。
有没有更好的方法来做到这一点?
--
NB。特别注意,拥有自定义视图 /blah/item/json 根本没有任何用处;任何父文件夹中的任何类型的项目都应该能够以上述方式呈现;使用单个静态路由不是正确的解决方案。