如何确定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
Plone 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 (枕头)
发布于 2019-03-19 19:26:25
PloneFormGen对TTW脚本使用了受限的Python。您可以在对象上使用dir()或vars()来了解它们提供了什么。要查看这一点,您可能希望打印它们。
TTW脚本并不是很好理解。也许可以看看相关的代码,或者使用调试模式获取表单,并使用与上面相同的方法使用真正的调试器来查看发生了什么。
./bin/instance debug,那么您将拥有数据库的根对象'app‘。
获取表单可以像下面这样简单:
myform = app.unrestrictedTraverse('Plone/my-form')获取所有表单域对象(子对象):
myform.objectItems()获取特定字段(包括数据保存适配器对象):
myform.objectIds()
myform['adapter-id']祝你好运;)
发布于 2019-03-15 22:50:23
在对象上调用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来查看代码。
发布于 2019-03-31 19:58:07
在代码示例中,ploneformgen是可用的上下文变量,表示form-folder-object,savefield表示位于form-folder中的保存数据适配器的ID。
您需要添加一个名为savefield的保存数据适配器,或者如果已经存在,则相应地更改脚本中的ID。
https://stackoverflow.com/questions/55184928
复制相似问题