2011-09-28 31 views
0

目標:使用應用程序引擎的基本web應用程序框架我想創建一個帶有發佈數據的新請求,以發送到另一個RequestHandler。喜歡的東西pageGenerator.post({'message':'the message','datum1':datum1,...}) ...在App Engine中從一個RequestHandler發佈到另一個RequestHandler

問題描述:一個請求處理程序,把它pageGenerator,創建上有一個表單的頁面。當用戶提交表單時,帖子會轉到其他處理程序:dataProcessor。如果dataProcessor發現提交的數據有問題,它會將提交的數據以及錯誤消息發送到pageGenerator的post方法,pageGenerator將提供錯誤消息的頁面。

我該如何來回傳遞數據(和控制)?我想pageGenerator能夠通過self.request.get('message')獲取數據。

+1

數據處理器需要成爲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

相關問題