在我的Zope实例中,我将一个Python脚本注册为浏览器页面。我有以下代码作为其注册表:
<browser:page name="test" for="*" permission="zope2.Public" class="browser.test.PyTest" attribute="CallPy" />
此函数“PyTest.CallPy”定义为:
def CallPy(self, data): ...
然后我使用JavaScript来调用函数,传递数据:
$.ajax({ url: "@@test", data: ({data: "mydata"}), dataType: "text", success: ..., error: ... });
然而,当我进行此调用时,我收到一条错误消息,指出“CallPy()正好接受2个参数(给定1个)”。
如何在调用此数据时将此函数注册为传递此数据的页面?
答案 0 :(得分:3)
你遗漏了很多关于你的方法的细节。这是一个班级的方法吗?还是独立的?通常, self 会引用类 PyTest 的实例 - 它将是 BrowserView 的子类。
然后,您从请求对象中检索传递给视图的数据( @@ test ),该对象位于 self.request (特别是在这种情况下, self.request.form.data )(因此,您没有为方法指定'data'参数)。
嗯。我不认为你想要围绕dict的括号:data: ({data: "mydata"})
。