web.input()與web.data()是web.py模塊中的兩個函數,都用來獲取http請求包中的信息,但是獲取的信息不同。
web.input()獲取的是通過http請求包第一行的url傳入的參數,返回值是類似於字典的key-value對。由於GET和POST請求包都可以通過url傳入參數,所以兩種請求包均可使用web.input()來獲取url傳入的參數,當然,通常情況下使用web.input()來獲取GET請求包的url參數。
應用示例:假如http請求包中的url處的內容是/index.html?name=kun&age=23,通過以下代碼獲取參數中的值:
>>> user_input = web.input() >>> user_input.name 'kun' >>> user_input.age '23'
可以看出獲取到的值都是字符串類型的。
web.data()獲取的是http請求包中的實體正文,函數返回值類型是字符串。由於GET請求包中沒有實體正文,所以GET請求包是不能使用web.data()函數的,只有POST請求包纔可以使用web.data()函數。
應用示例:假如http POST請求包的實體正文是:username=jay&password=123456,通過以下代碼獲取實體正文:
>>> web.data() 'username=jay&password=123456'
可以看出,獲取的實體正文的數據類型是一整個大的字符串。
綜合來說:
web.input() 獲取url參數,可以用於GET和POST請求包。
web.data() 獲取實體正文,只能用用POST請求包。