gpt4 book ai didi

python - Plone 4 : how to get the context for a sub-folder with a hyphen in the shortname

转载 作者:行者123 更新时间:2023-11-28 23:03:51 25 4
gpt4 key购买 nike

我正在编写一个 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.subfolder。相反,您必须使用以下语法:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com