Tornado入门2
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world") # 可以返回字符串
# self.render("s1.html") # 这个可以返回html
# self.redircet("www.baidu.com") # 跳转到某个url
application = tornado.web.Application([
(r"/index", MainHandler),
])
if __name__ == "__main__":
application.listen(8000)
tornado.ioloop.IOLoop.instance().start()
https://blog.csdn.net/belalds/article/details/80575755#
上一节在tornado.web.Application.listen()
(示例代码中的app.listen(8000))的方法中,创建了一个http服务器示例并绑定到给定端口,现在手动来实现这一部分功能。
修改上一示例代码如下:
# -*- coding:utf-8 -*-
import tornado.web
import tornado.ioloop
import tornado.httpserver # 新引入httpserver模块
class IndexHandler(tornado.web.RequestHandler):
"""主路由处理类"""
def get(self):
"""对应http的get请求方式"""
self.write("Hello World!")
if __name__ == "__main__":
app = tornado.web.Application([
(r"/", IndexHandler),
])
# ------------------------------
# 修改这个部分
# app.listen(8000)
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(8000)
# ------------------------------
tornado.ioloop.IOLoop.current().start()
在这一修改版本中,引入了tornado.httpserver
模块,顾名思义,它就是tornado的HTTP服务器实现。
这里创建了一个HTTP服务器实例http_server
,因为服务器要服务于刚刚建立的web应用,将接收到的客户端请求通过web应用中的路由映射表引导到对应的 handler 中,所以在构建 http_server 对象的时候需要传出web应用对象app。http_server.listen(8000)
将服务器绑定到8000
端口。
实际上一版代码中app.listen(8000)
正是对这一过程的简写。
使用命令行参数指定端口号
#-*- coding:utf-8 -*-
from tornado.web import RequestHandler,Application
from tornado.ioloop import IOLoop
from tornado.httpserver import HTTPServer
import tornado.options
"""
全局配置
tornado.options.define(name, default, type, multiple, help)
"""
#定义变量
tornado.options.define('port',default=8000,type=int,help="this is the port >for application")
class IndexHandler(RequestHandler):
def get(self):
self.write('Hello,world!')
if __name__ == '__main__':
app = Application([(r'/',IndexHandler)])
tornado.options.parse_command_line()#命令行参数转换
http_server = HTTPServer(app)
http_server.bind(tornado.options.options.port)
http_server.start(1)
#启动IOLoop轮循监听
IOLoop.current().start()
将以上代码保存到为文件demo1.py
然后是使用命令python demo1.py --port=8888
指定运行端口为8888。
路由
# -*- coding:utf-8 -*-
from tornado.web import Application, RequestHandler, url
from tornado.ioloop import IOLoop
from tornado.httpserver import HTTPServer
class IndexHandler(RequestHandler):
def get(self):
self.write("<a href='"+self.reverse_url("login")+"'>用户登录</a>")
class RegistHandler(RequestHandler):
def initialize(self, title):
self.title = title
def get(self):
self.write("注册业务处理:" + str(self.title))
class LoginHandler(RequestHandler):
def get(self):
self.write("用户登录页面展示")
def post(self):
self.write("用户登录功能处理")
if __name__ == "__main__":
app = Application(
[
(r"/", IndexHandler),
(r"/regist", RegistHandler, {"title": "会员注册"}),
url(r"/login", LoginHandler, name="login"),
]
)
http_server = HTTPServer(app)
http_server.listen(8000)
IOLoop.current().start()