我正在阅读最近的Plone 4.1.2安装专业Plone 4开发书。
我已经通过Dexterity成功定义了内容类型,现在我正在尝试为其中一种类型创建自定义视图。架构&视图定义如下:
from zope import schema
from plone.directives import form
from five import grok
from ctcc.contenttypes import CTCCTypesMessageFactory as _
class ITrial(form.Schema):
"""A clinical trial."""
title = schema.TextLine(
title = _(u'label_title', default=u'Title'),
required = True,
)
description = schema.Text(
title=_(u'label_description', default=u'Description'),
description = _(u'help_description', default=u'A short summary of the content'),
required = False,
missing_value = u'',
)
class View(grok.View):
grok.context(ITrial)
grok.require('zope2.View')
grok.name('view')
以下是该类型FTI的相关部分: 视图 假
<alias from="(Default)" to="(selected layout)"/>
<alias from="edit" to="@@edit"/>
<alias from="sharing" to="@@sharing"/>
<alias from="view" to="@@view"/>
<action title="View" action_id="view" category="object" condition_expr=""
url_expr="string:${folder_url}/" visible="True">
<permission value="View"/>
</action>
模板本身位于 ctcc.contenttypes / trial_templates / view.pt ,它应该只显示标题&amp;描述:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
xmlns:tal="http://xml.zope.org/namespaces/tal"
xmlns:metal="http://xml.zope.org/namespaces/metal"
xmlns:i18n="http://xml.zope.org/namespaces/i18n"
lang="en"
metal:use-macro="context/main_template/macros/master"
i18n:domain="ctcc.contenttypes">
<body>
<metal:content-core fill-slot="content-core">
<metal:content-core define-macro="content-core">
<div tal:replace="structure context/text/output" />
</metal:content-core>
</metal:content-core>
</body>
</html>
访问具有所有这些类型的任何类型的实例会导致“找不到页面”错误。有些东西似乎并没有将新观点与预期的路径联系起来,但由于这是我与Plone的第一周,我不知道从哪里开始追踪它。我发现在前台模式下运行网站时没有错误。
任何帮助都将不胜感激。
答案 0 :(得分:2)
你是否在setup.py中包含了依赖项?
install_requires=[
'setuptools',
'plone.app.dexterity',
...
],
你是否在configure.zcml中初始化了Grok?
<configure
xmlns="http://namespaces.zope.org/zope"
...
xmlns:grok="http://namespaces.zope.org/grok">
<includeDependencies package="." />
<grok:grok package="." />
...
</configure>
您是否在您的metadata.xml中包含了Dexterity的GenericSetup配置文件?
<metadata>
<version>1</version>
<dependencies>
<dependency>profile-plone.app.dexterity:default</dependency>
</dependencies>
</metadata>
答案 1 :(得分:0)
问题在于模板中的这一行:
<div tal:replace="structure context/text/output" />
我已经删除了一个示例模板,我认为是最低限度的。感谢David Glick的建议,我从 error_log 中忽略的例外列表中删除了 NotFound ,并看到了以下内容:
Module Products.PageTemplates.Expressions, line 225, in evaluateText
Module zope.tales.tales, line 696, in evaluate
- URL: /opt/plone41/zeocluster/src/ctcc.contenttypes/ctcc/contenttypes/trial_templates/view.pt
- Line 13, Column 8
- Expression: <PathExpr standard:u'context/text/output'>
[...]
Module OFS.Traversable, line 299, in unrestrictedTraverse
- __traceback_info__: ([], 'text')
NotFound: text
现在我可以看到导致问题的原因并且已经开始深入了解TAL,我可以看出它为什么会失败:代表我的无知,如怀疑。
谢谢大家!