2011-09-28 3 views
0

Цель: Использование базовой платформы webapp для приложения engine Я хочу создать новый запрос с данными для отправки для отправки другому RequestHandler. Что-то вроде pageGenerator.post({'message':'the message','datum1':datum1,...}) ...Публикация с одного RequestHandler на другой в App Engine

Описание проблемы: обработчик Один запрос, назовем его pageGenerator, создает страницу с формой на нем. Когда пользователь отправляет форму, сообщение переходит к другому обработчику: dataProcessor. Если dataProcessor обнаруживает некоторую проблему с представленными данными, он отправляет представленные данные плюс сообщение об ошибке на метод postGenerator, а pageGenerator будет обслуживать страницу с сообщением об ошибке.

Как передавать данные (и контролировать) взад и вперед, как это? Я хотел бы pageGenerator, чтобы иметь возможность получить данные с self.request.get('message').

+1

Есть ли причина, по которой dataProcessor должен быть RequestHandler? Не было бы проще, если бы это был просто код, который вызывает вызовы pageGenerator? –

ответ

3

Похоже, вы слишком усложняете ситуацию. Рассмотрим только имея общий метод, чтобы показать форму, которая может быть вызвана при различных обстоятельствах:

class FormHandler(webapp.RequestHandler): 

    def get(self): 
    self.show_form() 

    def post(self): 
    if form_is_valid(): 
     handle_success() 
    else: 
     self.show_form({'feedback':'Validation failed'}) 

    def show_form(self, vals={}): 
    vals['field1'] = self.request.get('field1') 
    vals['field2'] = self.request.get('field2') 
    html = template.render('form.html', vals) 
    self.response.out.write(html) 

Если вам действительно нужно «форму показа» и «форма процесса», чтобы быть в разных классов-обработчиков, вы можете сделать то же самое путем определения show_form() в общем родительском классе.

+0

Форма представляет собой поле комментариев, которое полагается на данные сообщения, чтобы определить, что прокомментировано (и ключ комментария, если это редактирование). Поскольку отправка формы также является постулированием, я создал другой обработчик для получения запроса. Функция проверки находится во втором обработчике и хочет отправить пользователя обратно в первую очередь, но должна включать в себя переданные данные и ключ объекта, который прокомментирован. – Hank

+1

@Hank Ничто из этого не делает этот ответ менее действенным - вы все равно можете вызвать общий метод (в базовом классе) или функцию, которую оба обработчика используют для этой функции. Это гораздо более простой и портативный подход. –

+0

Спасибо всем. Я поработаю над этим. Раньше у меня были проблемы с использованием наследования в моем приложении, но я просто начал общаться с ним и, похоже, работает. – Hank

Смежные вопросы