运行服务器
import tornado.web
import tornado.ioloop
class IndexHandler(tornado.web.RequestHandler):
def get(self):
self.write("春暖花开")
def post(self):
self.write("post")
if __name__ == '__main__':
app = tornado.web.Application([(r'/',IndexHandler)])
app.listen(9000)
print("服务器运行......")
tornado.ioloop.IOLoop.current().start()
多线程
import tornado.web
import tornado.ioloop
class IndexHandler(tornado.web.RequestHandler):
def get(self):
self.write("春暖花开")
def post(self):
self.write("post")
if __name__ == '__main__':
app = tornado.web.Application([(r'/',IndexHandler)])
server = tornado.web.HTTPServer(app)
server.bind(8000)
server.start(2)
print("服务器运行......")
tornado.ioloop.IOLoop.current().start()
参数定义
import tornado.web
import tornado.ioloop
import tornado.options
from settings import params
tornado.options.define('p',default=9090,type=int)
class IndexHandler(tornado.web.RequestHandler):
def get(self):
self.write("不到长城非好汉")
def main():
tornado.options.parse_command_line()
app = tornado.web.Application([(r'/',IndexHandler)],**params)
app.listen(tornado.options.options.p)
tornado.ioloop.IOLoop.current().start()
if __name__ == '__main__':
main()
路由
import tornado.web
import tornado.ioloop
import tornado.options
from tornado.web import url
from settings import params
tornado.options.define('p',default=9090,type=int)
class IndexHandler(tornado.web.RequestHandler):
def get(self):
self.write("不到长城非好汉")
class ShowHandler(tornado.web.RequestHandler):
def initialize(self,name,age):
self.name = name
self.age = age
def get(self):
self.write("姓名:{}".format(self.name))
class ListHandler(tornado.web.RequestHandler):
def get(self):
self.write("路由")
class DetailHandler(tornado.web.RequestHandler):
def get(self,aid):
print(aid,type(aid))
self.write("详细信息"+aid)
def main():
tornado.options.parse_command_line()
app = tornado.web.Application(
[(r'/',IndexHandler),
(r'/show/',ShowHandler,{'name':'admin','age':20}),
url(r'/list/',ListHandler,name='list'),
(r'/detail/(\d+)/',DetailHandler),
],
**params
)
app.listen(tornado.options.options.p)
tornado.ioloop.IOLoop.current().start()
if __name__ == '__main__':
main()
get/post传参
import tornado.web
import tornado.ioloop
class IndexHandler(tornado.web.RequestHandler):
def get(self):
print(self.get_query_arguments('name'))
print("**"*100)
print(self.request.method)
print(self.request.path)
print(self.request.remote_ip)
print(self.request.query)
print(self.request.body)
print(self.request.headers)
self.write("春暖花开")
def post(self):
print(self.get_body_argument('name'))
print(self.get_body_arguments('name'))
self.write("post")
class UserHandler(tornado.web.RequestHandler):
def get(self,name,age):
self.write(name+" "+age)
if __name__ == '__main__':
app = tornado.web.Application([(r'/',IndexHandler),
(r'/show/(?P<name>\w+)/(?P<age>\d+)/',UserHandler),
],debug=True)
server = tornado.web.HTTPServer(app)
server.listen(9000)
print("服务器运行......")
tornado.ioloop.IOLoop.current().start()
write+重定向
import tornado.web
import tornado.ioloop
import tornado.options
from settings import params
tornado.options.define('p',default=9090,type=int)
class IndexHandler(tornado.web.RequestHandler):
def set_default_headers(self):
self.set_header("password",'123')
def get(self):
self.write("不到长城非好汉")
self.write("----------")
self.write("可上九天揽月")
self.set_header("hello",'world')
self.send_error(500,title="服务器错误")
self.write({'name':'admin','age':30})
def write_error(self, status_code, **kwargs):
self.write("你的页面不见了--")
self.write(str(status_code))
self.write(kwargs)
class ShowHandler(tornado.web.RequestHandler):
def get(self):
print("show")
self.redirect('/')
def main():
tornado.options.parse_command_line()
app = tornado.web.Application(
[(r'/',IndexHandler),
(r'/show/',ShowHandler),
],
**params
)
app.listen(tornado.options.options.p)
tornado.ioloop.IOLoop.current().start()
if __name__ == '__main__':
main()
执行顺序
import tornado.web
import tornado.ioloop
import tornado.options
from settings import params
tornado.options.define('p', default=9090, type=int)
class IndexHandler(tornado.web.RequestHandler):
def initialize(self):
print("调用了initialize()")
def prepare(self):
print("调用了prepare()")
def set_default_headers(self):
print("调用了set_default_headers()")
def write_error(self, status_code, **kwargs):
print(str(status_code))
print(kwargs)
print("调用了write_error()")
self.write("write_error")
def get(self):
print("调用了get()")
self.send_error(404, msg="你请求的页面不存在")
self.write("get")
def post(self):
print("调用了post()")
self.send_error(200)
def on_finish(self):
print("调用了on_finish()")
def main():
tornado.options.parse_command_line()
app = tornado.web.Application([(r'/', IndexHandler), ], **params)
app.listen(tornado.options.options.p)
tornado.ioloop.IOLoop.current().start()
if __name__ == '__main__':
main()
调用了set_default_headers()
调用了initialize()
调用了prepare()
调用了get()
调用了set_default_headers()
404
{'msg': '你请求的页面不存在'}
调用了write_error()
调用了on_finish()
网页显示
import tornado.web
import tornado.ioloop
import tornado.options
from tornado.web import url
from settings import params
tornado.options.define('p',default=9090,type=int)
class IndexHandler(tornado.web.RequestHandler):
def get(self):
self.render("index.html",price=1200,
title="宽窄巷子+160平大空间+文化保护区双地铁",
comments="整套出租 - 5分/6点评 - 北京市丰台区六里桥地铁",
score=5,
position="北京市丰台区六里桥地铁",
a=[1, 2, 3]
)
house_info = {
"price": 398,
"title": "宽窄巷子+160平大空间+文化保护区双地铁",
"score": 5,
"comments": 6,
"position": "北京市丰台区六里桥地铁",
'a':[1,2,3]
}
self.render("index.html",**house_info)
def main():
tornado.options.parse_command_line()
app = tornado.web.Application([(r'/',IndexHandler)],**params)
app.listen(tornado.options.options.p)
tornado.ioloop.IOLoop.current().start()
if __name__ == '__main__':
main()