自定义添加和编辑模板灵巧

2024-05-19 08:11:52 发布

您现在位置:Python中文网/ 问答频道 /正文

“我有个包裹叫食品包装. 我还有一个叫做我的文档.py. 作为一个标准结构,在foo/package中我有浏览器、内容、配置文件等。我想要实现的是为我的内容项mydocument创建一个定制的add模板。 我已经从这个链接http://docs.plone.org/external/plone.app.dexterity/docs/advanced/custom-add-and-edit-forms.html读了这篇文章

我所做的是在浏览器目录中创建了一个文件,并将其命名为mydocumentaddform.py文件. 此外,在我的浏览器目录中,我有模板目录。你知道吗

里面的代码mydocumentaddform.py文件地址:

from five import grok
from plone.directives import dexterity, form
from Products.CMFCore.utils import getToolByName
grok.templatedir('templates')

class mydocumentaddform(dexterity.AddForm):
    grok.name('foo.package.mydocument')
    form.wrap(False)

在browser/templates目录中,我创建了模板mydocumentaddform.pt文件. 但是,在添加mydocument内容时,没有呈现自定义的mydocumentdform模板,因为在模板内部添加了js脚本,以检测自定义的add模板是否覆盖默认的add模板。当我查看我的实例时,有一个用户警告说有一个未关联的模板配置指向我的add template:~。。。/foo/包/浏览器/模板/mydocumentaddform.pt文件你知道吗

有没有人遇到过同样的问题?或者有没有别的办法?谢谢。你知道吗

*是的,我忘了在这里加引号集团名称. 你知道吗

更新: 我在类ViewPageTemplateFile中找到了一个临时解决方案。以下是更新的代码:

from five import grok
from plone.directives import dexterity, form
from Products.CMFCore.utils import getToolByName
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
grok.templatedir('templates')

class mydocumentaddform(dexterity.AddForm):
    grok.name('foo.package.mydocument')
    template = ViewPageTemplateFile('templates/mydocumentaddform.pt')
    form.wrap(False)

自定义的add模板已经被读取,但是,我的实例总是说我使用的模板仍然没有关联。我还观察到,当我将基类替换为灵巧.DisplayForm,实例错误消失。有了这个临时解决方案,我不确定将来会不会因为这个持续的错误而产生任何影响。你知道吗


Tags: 文件fromimportform目录add模板grok
1条回答
网友
1楼 · 发布于 2024-05-19 08:11:52

我在您的代码中看到一些问题:您缺少名称上的引号:

grok.name('foo.package.mydocument')

您需要定义上下文:

grok.context(IMyDocument)

您是否声明了附加层?那么你需要:

grok.layer(IMyLayer)

您可以在collective.nitf中找到一个工作示例。你知道吗

相关问题 更多 >

    热门问题