tornado1

运行服务器

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__':
    # 创建一个web应用
    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__':
    # 创建一个web应用
    app = tornado.web.Application([(r'/',IndexHandler)])
    # 创建web server
    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):
    # 接收路由中的附加参数,参数个数和initialize中参数一致
    def initialize(self,name,age):
        self.name = name
        self.age = age
    # def initialize(self,**kwargs):
    #     self.name = kwargs.get('name')
    #     self.age = kwargs.get('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):
        # 1.获取get传参
        # 获取单值
        # print(self.get_query_argument('name',default=None))
        #获取多个值,得到一个参数列表
        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):
        # 2.post参数
        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__':
    # 创建一个web应用
    app = tornado.web.Application([(r'/',IndexHandler),
                                   (r'/show/(?P<name>\w+)/(?P<age>\d+)/',UserHandler),
                                   ],debug=True)
    # 创建web server
    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):
    # 限于http的方法执行,自动执行
    def set_default_headers(self):
        self.set_header("password",'123')
    def get(self):
        # write会自动将多个输出组成一个字符串返回
        self.write("不到长城非好汉")
        self.write("----------")
        self.write("可上九天揽月")

        #自定义响应头
        self.set_header("hello",'world')
        #send_error会终止代码继续执行,转而跳转到write_error执行
        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()")  # 2

    def prepare(self):
        print("调用了prepare()")  # 3

    def set_default_headers(self):
        print("调用了set_default_headers()")  # 1 #  5

    def write_error(self, status_code, **kwargs):
        print(str(status_code))  # 6
        print(kwargs)  # 7
        print("调用了write_error()")  # 8
        self.write("write_error")

    def get(self):
        print("调用了get()")  # 4
        self.send_error(404, msg="你请求的页面不存在")
        self.write("get")

    def post(self):
        print("调用了post()")
        self.send_error(200)  # 注意此出抛出了错误

    def on_finish(self):
        print("调用了on_finish()")  # 9


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()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值