tornado 3.0.1 学习之GET POST方法

        关于tornado网上的教程几乎没有,主要是官方的demo和doc,然后就是tornado自己的源码。不过我觉得这也够了,如果像django那样庞大而且提供一步一步的tutorial,但照着做完也还是搬砖码字的,还是不知所以然。对,django也可以看源码看细节,但重度的耦合关系很打击初学者的,所以以tornado开始,是非常正确的,而且tornado的灵活性可扩展性以及与nginx搭配后接近完美的性能,让人着迷。现在正式开始。

        我依照demo的风格写了个简单的小例子以说明get和post的方法使用:

import torndb
import tornado.web
import tornado.ioloop
from tornado.options import define,options,parse_command_line

define('port',default=8888,help='run on the port',type=int)
database=torndb.Connection('localhost','talk',user='root',password='ll')
l=[]
class MainHandler(tornado.web.RequestHandler):
	def get(self):
		self.render('a.html',title='haha',items=l)
	def post(self):
		count=1
		print(self.request.remote_ip)
		talk=self.get_argument('talk')
		talk=str(talk)
		database.execute('insert into chatting(id,content) values(%d,"%s")'%(count,talk))
		l.append(talk)
		self.render('a.html',title='haha',items=l)
def main():
	parse_command_line()
	app=tornado.web.Application(
			[
				(r'/',MainHandler),
				],
			)

	app.listen(options.port)
	tornado.ioloop.IOLoop.instance().start()
	
if __name__=='__main__':
	main()

        a.html的内容如下:

<html>
	<head>
		<title>{{title}}</title>
	</head>
	<body>
		<form name='input' action='/' method='post'>
		talk:
		<input type='text' name='talk'/>
		<input type='submit' value='send'/>
	</form>
		<ul>
			{%for i in items%}
			<li>{{escape(i)}}</li>
			{%end%}
		</ul>
	</body>
</html>

        浏览器打开localhost:8888的时候,发出get请求,请求根目录"/",根据tornado.web.Application中参数列表中元组对(r'/',MainHandler),于是找到MainHandler类,这个类继承了tornado.web.RequestHandler类,但是TA里面没有定义get和post方法(具体可以看源码),所以在MainHandler类中定义。由于我只在用户第一次访问网站时处理get方法,所以就是render a.html 就可以了。之后传递数据全用post方法,并把网页上输入的数据存放到数据库中。

        浏览器显示如下:

tornado 3.0.1 学习之GET POST方法_第1张图片


数据库中显示如下:

tornado 3.0.1 学习之GET POST方法_第2张图片


终端显示如下:

tornado 3.0.1 学习之GET POST方法_第3张图片


转载请注明:转自 http://blog.csdn.net/littlethunder/article/details/8930157

你可能感兴趣的:(html,mysql,python,tornado,torndb)