1 import torndb 2 import tornado.web 3 import tornado.ioloop 4 from tornado.options import define,options,parse_command_line 5 6 define('port',default=8888,help='run on the port',type=int) 7 database=torndb.Connection('localhost','talk',user='root',password='ll') 8 l=[] 9 class MainHandler(tornado.web.RequestHandler): 10 def get(self): 11 self.render('a.html',title='haha',items=l) 12 def post(self): 13 count=1 14 print(self.request.remote_ip) 15 talk=self.get_argument('talk') 16 talk=str(talk) 17 database.execute('insert into chatting(id,content) values(%d,"%s")'%(count,talk)) 18 l.append(talk) 19 self.render('a.html',title='haha',items=l) 20 def main(): 21 parse_command_line() 22 app=tornado.web.Application( 23 [ 24 (r'/',MainHandler), 25 ], 26 ) 27 28 app.listen(options.port) 29 tornado.ioloop.IOLoop.instance().start() 30 31 if __name__=='__main__': 32 main()
以上代碼是依照demo的風格寫了個簡單的小例子以說明get和post的方法使用
a.html的內容如下:
1 <html> 2 <head> 3 <title>{{title}}</title> 4 </head> 5 <body> 6 <form name='input' action='/' method='post'> 7 talk: 8 <input type='text' name='talk'/> 9 <input type='submit' value='send'/> 10 </form> 11 <ul> 12 {%for i in items%} 13 <li>{{escape(i)}}</li> 14 {%end%} 15 </ul> 16 </body> 17 </html>
說明:
<第一次訪問網站時采用get方法,之后由於在html中采用form表單且方法使用的post,所以后來的傳遞數據全用post方法>
瀏覽器打開localhost:8888的時候,發出get請求,請求根目錄"/",根據tornado.web.Application中參數列表中元組對(r'/',MainHandler),於是找到MainHandler類,這個類繼承了tornado.web.RequestHandler類,但是TA里面沒有定義get和post方法(具體可以看源碼),所以在MainHandler類中定義。由於我只在用戶第一次訪問網站時處理get方法,所以就是render a.html 就可以了。之后傳遞數據全用post方法,並把網頁上輸入的數據存放到數據庫中。
瀏覽器顯示如下:
數據庫中顯示如下:
終端顯示如下: