Tornado學習筆記(二) 路由/post/get傳參


本章我們學習 Tornado 的路由傳參等問題

路由

路由的匹配

Tornado的路由匹配采用的是正則匹配

一般情況下不需要多復雜的正則,正則的基本規則如下(站長之家)

舉個例子

(r'/sum/(\d+)', Sum),

該代碼指匹配 /sum/  后跟至少一個數字且只有數字的情況

* 需要注意的是網絡上傳輸都是字符串

類 Sum編寫

class Sum(tornado.web.RequestHandler):
    # 數字類
    def get(self, sum):
        # 獲取數字並返回
        self.write('%s,%s' % (type(sum), sum))

我們訪問 http://localhost:8001/sum/12 時

返回正常

我們訪問 http://localhost:8001/sum/1a2  http://localhost:8001/sum/a12  http://localhost:8001/sum/12a  http://localhost:8001/sum/a 時,均會報出404錯誤,證明沒有匹配到路由

 

同理,當我們需要匹配兩個參數時

(r'/(\w+)/stuggle/(\d+)', Stugggle),

接收時接收兩個參數即可

def get(self, st, ins):
  pass

 post參數

與get一樣,post請求會尋找到該視圖的 post 方法

我們給視圖 Hello 增加一個post

class Hello(tornado.web.RequestHandler):
    # 封裝一個類
    def get(self):
        # get請求進入該方法
        self.write('Hello')
    def post(self):
        # post請求
        txt = self.get_argument('txt')
        self.write(txt)

self.get_argument('txt') 指獲取post傳參中 Key 為 txt 的值,路由無需改動

 get參數

get獲取參數與上面的post沒有差別

我們修改get方法來進行測試

    def get(self):
        # get請求進入該方法
        arg = self.get_argument('arg')
        arg1 = self.get_argument('arg1')
        self.write('%s+%s' % (arg,arg1))

 

 

但是需要注意的是, get_argument  在獲取不到該key時會報錯,拋出400錯誤

 

  get_argument  方法其實可以接收三個參數

get_argument(name,default=_ARG_DEFAULT,strip=True)

第一個參數就是key的值,第二個參數為如果接收不到默認的值,第三個是默認去除前后空格

一般情況下我們第二個參數傳 None

    def get(self):
        # get請求進入該方法
        arg = self.get_argument('arg', None)
        arg1 = self.get_argument('arg1', None)
        self.write('%s+%s' % (arg,arg1))
    def post(self):
        # post請求
        txt = self.get_argument('txt', None)
        self.write(txt)

這樣就增加了兼容性

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM