首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定PloneFormGen中可用的属性和方法

如何确定PloneFormGen中可用的属性和方法
EN

Stack Overflow用户
提问于 2019-03-15 22:33:06
回答 3查看 130关注 0票数 1

如何确定PloneFormGen中对象的方法和属性?我想为自定义字段适配器编写一些脚本,并想知道哪些是可用的。我直接的问题来自于我复制的一些在线代码:Python script to hide ploneformgen form after user has filled it out. (For Plone-4.3.2-64.)

代码语言:javascript
复制
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 (枕头)

EN

回答 3

Stack Overflow用户

发布于 2019-03-19 19:26:25

PloneFormGen对TTW脚本使用了受限的Python。您可以在对象上使用dir()或vars()来了解它们提供了什么。要查看这一点,您可能希望打印它们。

TTW脚本并不是很好理解。也许可以看看相关的代码,或者使用调试模式获取表单,并使用与上面相同的方法使用真正的调试器来查看发生了什么。

./bin/instance debug,那么您将拥有数据库的根对象'app‘。

获取表单可以像下面这样简单:

代码语言:javascript
复制
myform = app.unrestrictedTraverse('Plone/my-form')

获取所有表单域对象(子对象):

代码语言:javascript
复制
myform.objectItems()

获取特定字段(包括数据保存适配器对象):

代码语言:javascript
复制
myform.objectIds()
myform['adapter-id']

祝你好运;)

票数 1
EN

Stack Overflow用户

发布于 2019-03-15 22:50:23

在对象上调用dir()以返回它拥有的所有可用方法和属性的列表。

或者,对函数、类、类方法或类属性使用inspect.getsource(),以返回与其关联的源代码。

使用pandas DataFrame对象的示例:

代码语言:javascript
复制
>>> 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来查看代码。

票数 0
EN

Stack Overflow用户

发布于 2019-03-31 19:58:07

在代码示例中,ploneformgen是可用的上下文变量,表示form-folder-object,savefield表示位于form-folder中的保存数据适配器的ID。

您需要添加一个名为savefield的保存数据适配器,或者如果已经存在,则相应地更改脚本中的ID。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55184928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档