Tornado入门2

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()
原文地址:https://www.cnblogs.com/id88/p/14435393.html