2015年4月21日

Webapp2 教學 (4) - Request 傳入參數處理 ( Handle request data in Webapp2 tutorial )

之前連續三篇將 Webapp2 基本用法都介紹了,接下來將會深入幾個重點補足之前教學文章的不足處。本篇將介紹如何在 Webapp2 中處理 Request 以及其傳入參數。( 其他 Webapp2 相關教學可以參考本篇整理 )



了解 Request Handler:
Request Handler 提供 get( )post( ) 兩個方法針對不同類型請求 ( GET、POST ) 做出反應,因此使用上應注意。例如,請求為 POST 而 class 中只定義了 get() 的方法會出現錯誤訊息 ( 405 Method Not Allowed )。程式碼參考如下:
# 簡單的 Handler 範例
class MainPage(webapp2.RequestHandler):
    # 對應 POST 方法
    def post(self):
        # Do what you want ...

    # 對應 GET 方法
    def get(self):
        # Do what you want ...


取得傳入參數:
以 GET 請求為例子,假設 Request 傳入兩個參數分別是 name 與 age ,而參數值分別是 Kelly 與 19,所以 Request 應該是長得類似像這樣 ( .../request?name=Kelly&age=19 )。我們可以在 Handler 中設定取得參數的方式為:
class MainPage(webapp2.RequestHandler):
    def get(self):
        # 取得參數 name 的值
        self.request.get("name")

        # 取得所有參數
        self.request.GET

        # 取得參數 name 的值,若有兩個 name 參數則顯示最後一個
        self.request.GET['name']

        # 取得所有名為 name 參數值
        self.request.GET.getall('name')

        # 取得所有參數
        self.request.GET.items()
至於 post( ) 的方式基本上相同,差別在於必須改成 request.POST * 。若你覺得麻煩的話,可以使用 request.params ,這個方法就不局限於是 GET 或是 POST。更詳細相關 Request 物件的屬性,請參考這部分文件


Environment :
  ・ Arch Linux
  ・ Python 2.7

Reference :
  ・ Webapp2 official site


熱門文章