Skip to content

为Tornado框架开发的一款Flask风格的蓝图实现,实现了Flask Blueprint的一些常用功能。

License

Notifications You must be signed in to change notification settings

kouyalong/tornadoblueprint

 
 

Repository files navigation

TornadoBlueprint

build Coverage Status

前言

非常感谢提交PR的朋友:@lichao0x7cc

概述

笔者比较喜欢Flask框架route风格的URL路由,Tornado框架中URL路由是指定tornado.web.Application的参数,很不Pythonic,所以笔者为Tornado框架编写了Flask风格蓝图小玩具。

现阶段支持的功能:

  • 支持Blueprintprefix参数。
  • 支持Blueprint.route方法的methods参数,限定客户端HTTP Methods
  • 支持/<int:id>/, <float:id>, <uuid:uuid>Flask风格的URI,兼容Tornado正则表达式风格URL
  • 支持Flask框架的url_for函数,使用RequestHandler__endpoint__属性指定endpoint名称,未指定则默认为__class__.__name__

1. 安装

注意: TornadoBlueprint已上传至Python官方PYPI服务器,可通过pip命令直接安装,当前最新版本为0.2.6

pip install tornadoblueprint==0.2.6

2. 使用

注意: TornadoBlueprint示例代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import tornado.web
import tornado.ioloop
import tornado.httpserver

from tornadoblueprint import blueprint


indexbp = blueprint.Blueprint('index', prefix='')


@indexbp.route('/shows/<int:_id>/', methods=('GET', 'POST',))
class IntHandler(tornado.web.RequestHandler):

    def get(self, _id):
        self.write("Id is: %d<br>" % int(_id))
        return self.finish()


@indexbp.route('/shows/<float:f1>/<float:f2>/', methods=('GET', 'POST',))
class FloatHandler(tornado.web.RequestHandler):

    def get(self, f1, f2):
        self.write("Sum of %.2f + %.2f = %.2f<br>" % (
            float(f1), float(f2), float(f1) + float(f2)))
        return self.finish()


@indexbp.route('/index', methods=('GET', ))
class IndexHandler(tornado.web.RequestHandler):

    __endpoint__ = 'index'

    def get(self):
        self.write('Index!!!')
        return self.finish()


@indexbp.route('/shows/<uuid:guid>/', methods=('GET', 'POST',))
class UuidHandler(tornado.web.RequestHandler):

    def get(self, guid):
        self.write("Uuid is: %s<br>" % guid)
        return self.redirect(blueprint.url_for('index.index'))


if __name__ == '__main__':
    app = tornado.web.Application()
    server = tornado.httpserver.HTTPServer(blueprint.wraps(app))
    server.listen(8000)
    tornado.ioloop.IOLoop.current().start()

About

为Tornado框架开发的一款Flask风格的蓝图实现,实现了Flask Blueprint的一些常用功能。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 99.1%
  • Shell 0.9%