- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个 python 脚本来将内容从另一个 CMS 导入到 Plone 4.1。由于多种原因,我像这样运行它:bin/instance run path/to/myscript
我的问题是如何为 ID/简称中带有连字符的文件夹获取正确的上下文。例如,从一个名为 mysite 的 Plone 站点的根目录,我可以像这样使用一个名为“子文件夹”的文件夹:
from Products.CMFCore.utils import getToolByName
urltool = getToolByName(app.mysite, "portal_url")
portal = urltool.getPortalObject()
folder = getattr(portal, 'sub-folder')
但是如果我想在该子文件夹中创建一个文件夹或页面,下面会抛出一个错误:“AttributeError: sub”
urltool = getToolByName(app.mysite.sub-folder, "portal_url")
portal = urltool.getPortalObject()
对 News 文件夹(没有连字符)执行相同的操作不会产生错误:
urltool = getToolByName(app.mysite.news, "portal_url")
portal = urltool.getPortalObject()
简单地尝试 portal.sub-folder 会引发相同的错误。
那么获取“http://localhost:8080/mysite/sub-folder”的正确上下文的 python 代码是什么,这样我就可以成功调用 invokeFactory 方法并在 mysite/中创建文件夹或页面子文件夹?
如果我需要找到“http://localhost:8080/mysite/sub-folder/2nd-level”的上下文怎么办?
我找到的在线文档似乎只说明名为 dog 或 news 的文件夹,它们的 ID/简称中没有连字符。但是,如果您在 Plone 中手动创建这些项目,短名称显然带有连字符,因此必须有一种方法来获取正确的文件夹上下文。
最佳答案
那是因为如果你使用:
app.mysite.sub-folder
python 认为您正在尝试区分 app.mysite.sub
和 folder
。相反,您必须使用以下语法:
secondlevel = mysite['sub-folder']['2nd-level']
或
secondlevel = mysite.restrictedTraverse('/mysite/sub-folder/2nd-level')
关于python - Plone 4 : how to get the context for a sub-folder with a hyphen in the shortname,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8285950/
我是一名优秀的程序员,十分优秀!