В моем экземпляре Zope у меня есть Python script, зарегистрированный как страница браузера. У меня есть следующий код в качестве реестра:
<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 задано)".
Как зарегистрировать эту функцию в качестве страницы, которая передает эти данные при ее вызове?
Вам не хватает подробностей о вашем методе. Это метод класса? Или автономно? Обычно self ссылается на экземпляр класса PyTest - который будет подклассом BrowserView.
Затем данные, которые вы передаете в представление (@@test), извлекаются из объекта Запрос, который доступен в self.request (в частности, self.request.form.datastrong > ) (Таким образом, вы не указываете аргумент "data" для метода).
Ммм. Я не думаю, что вы хотите скобки вокруг dict в: data: ({data: "mydata"})
.
self.request.form['data']