Передать аргументы на страницу браузера Zope

1

В моем экземпляре 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 задано)".

Как зарегистрировать эту функцию в качестве страницы, которая передает эти данные при ее вызове?

Теги:
parameter-passing
zope

1 ответ

3
Лучший ответ

Вам не хватает подробностей о вашем методе. Это метод класса? Или автономно? Обычно self ссылается на экземпляр класса PyTest - который будет подклассом BrowserView.

Затем данные, которые вы передаете в представление (@@test), извлекаются из объекта Запрос, который доступен в self.request (в частности, self.request.form.data​​strong > ) (Таким образом, вы не указываете аргумент "data" для метода).

Ммм. Я не думаю, что вы хотите скобки вокруг dict в: data: ({data: "mydata"}).

  • 0
    Скобки в коде JavaScript и не имеют значения в этом случае. Zope будет отменять маршалинг параметров запроса и сопоставлять их с сигнатурой метода, поэтому CallPy должен быть передан параметр «data» из запроса GET, если все было настроено правильно.
  • 0
    Кроме того, в скрипте Python вы будете получать доступ к отправленным данным, как и любой другой словарь: self.request.form['data']

Ещё вопросы

Сообщество Overcoder
Наверх
Меню