如何确定PloneFormGen中对象的方法和属性?我想为自定义字段适配器编写一些脚本,并想知道可用的脚本。我的直接问题来自我从以下网站复制的一些在线代码: Python script to hide ploneformgen form after user has filled it out. (For Plone-4.3.2-64.)
alreadyInDB = False
savedData = ploneformgen.savefield.getSavedFormInputForEdit()
username = request.AUTHENTICATED_USER.getId()
return {'username': 'No way man!'}
usersInDB = [x.split(',')[1] for x in savedData.split('\r\n') if len(x)>0]
if username in usersInDB:
alreadyInDB = True
if alreadyInDB:
return {'username': 'No way man!'}
这是我收到的错误消息。
AttributeError:保存字段
我想做的是查看可用于属性和方法的内容,并修复此问题或编写自己的内容。任何帮助表示赞赏。
这是我们使用的: PloneFormGen 1.7.12 Products.PFGExtendedMailAdapter 2.4
克隆4.3.3(4308) CMF 2.2.7 Zope 2.13.22 Python 2.7.5(默认,2018年10月30日,23:45:53)[GCC 4.8.5 20150623(Red Hat 4.8.5-36)] PIL 2.0.0(枕头)
答案 0 :(得分:0)
在对象上调用dir()
,以返回其具有的所有可用方法和属性的列表。
或者,在函数,类,类方法或类属性上使用inspect.getsource()
来返回与其关联的源代码。
使用pandas DataFrame对象的示例:
>>> from inspect import getsource
>>> import pandas as pd
>>> df = pd.DataFrame()
>>> dir(df)
# returns methods and attributes of df
# which is an instance of a DataFrame object
>>> getsource(pd.DataFrame.head)
# returns source code for head attribute
# of a DataFrame object
请注意,getsource
需要访问实际类(在这种情况下为pd.DataFrame
)的属性/方法,而不是该类的实例(在本示例中为df
)。因此,您可以先使用dir
来确定方法/属性,然后在特定方法/属性上使用getsource
来查看代码。
答案 1 :(得分:0)
PloneFormGen对TTW脚本使用受限的Python。 您可以在对象上使用dir()或vars()来查找它们提供的内容。 要看到这一点,您可能需要打印它们。
TTW脚本自省性不强。 也许可以看一下相关代码,或者使用调试模式来获取Form并使用上面的相同方法使用真正的调试器来查看发生了什么。
./ bin /实例调试 然后,您将数据库的根对象作为“ app”。
获取表单可以如下所示:
var information_paragraph = document.getElementById(myDivElement);
var infoText = "Hello World!";
information_paragraph.innerHTML = infoText;
获取所有表单字段对象(子级):
myform = app.unrestrictedTraverse('Plone/my-form')
获取特定字段(包括dada保存适配器对象):
myform.objectItems()
祝你好运;)
答案 2 :(得分:0)
在代码示例中,ploneformgen
是可用的上下文变量,代表表单文件夹对象,savefield
代表驻留在表单文件夹中的保存数据适配器的ID。
您需要添加一个名为savefield
的保存数据适配器,或者如果已经存在,则相应地更改脚本中的ID。