tornado 學習之GET POST方法 -- (轉)


 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方法,並把網頁上輸入的數據存放到數據庫中。

 瀏覽器顯示如下:

 

數據庫中顯示如下:

 

終端顯示如下:

 


免責聲明!

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



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