Python web框架 Tornado 学习

最近学习 Tornado ,个人底子较为薄弱,所以好多东西都是一点点的踩过来。

这是一个最基础的demo希望对别人有帮助,英语不好看不懂外文的文档,所以好多东西都是我一点点在网上查出来的。

server.py

# -*- coding:utf-8 -*-
import os
import redis
import torndb
import config
import tornado.web
import tornado.ioloop
import tornado.options
import tornado.httpserver

from tornado.options import options
from tornado.web import RequestHandler

tornado.options.define("port",type=int,default=8800,help="服务器端口")
"""Base基类"""
class BaseHandler(RequestHandler):
    """@property 装饰器 将db做为 BaseHandler 的属性调用"""
    @property
    def db(self):
        return self.application.db
    def set_default_headers(self):
        #http请求头
        self.set_header("Access-Control-Allow-Origin", "*")
        self.set_header("Access-Control-Allow-Headers", "x-requested-with")
        self.set_header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS')
        self.set_header("Content-Type", "application/json; charset=UTF-8")
    def post(self):
        pass
    def get(self):
        pass
    def options(self):
        self.set_status(204)
        self.finish()


"""创建一个Application类把数据库连接和redis绑定到Application里"""
class Application(tornado.web.Application):
    def __init__(self,*args,**kwargs):
        """这个handlers也能剥离出去单写个文件"""
        handlers = [
            (r"/", IndexHandler)
        ]
        tornado.web.Application.__init__(self,handlers,**config.settings)
        self.db = torndb.Connection(**config.mysql_config)
        self.redis = redis.StrictRedis(**config.redis_config)


class IndexHandler(BaseHandler):
    """这里继承BaseHandler 所以才能用self.db"""
    def get(self):
        data = self.db.query("select * from stus")
        import json
        datas = json.dumps(data)

        self.write(datas)
    def post(self):
        jsons = {
            "name":"hahaha",
            "age":"45"
        }
        self.write(jsons)

def main():
    tornado.options.parse_command_line()
    http_server = tornado.httpserver.HTTPServer(Application())
    http_server.listen(options.port)
    tornado.ioloop.IOLoop.current().start()

if __name__ == '__main__':
    print "The Server Run In: http://127.0.0.1:%d"%options.port
    main()

config.py

# -*- coding:utf-8 -*-
import os
"""Application配置参数"""
settings = dict(
    static_path     = os.path.join(os.path.dirname(__file__), 'static'),
    templates_path  = os.path.join(os.path.dirname(__file__), 'templates'),
    cookie_secret   = "9bTzIuvlRtWWo9wpc4/6aFOL5Ub1uUFrs4x6bIHBqZc=",
    xsrf_cookies    = True,
    debug           = True,
 )
"""MySQL配置参数"""
mysql_config = dict(
    host            = "127.0.0.1",
    database        = "test1",
    user            = "root",
    password        = "1113"
)
"""Redis配置参数"""
redis_config = dict(
    host            = "127.0.0.1",
    port            = "6379"
)

猜你喜欢

转载自blog.csdn.net/weixin_37890100/article/details/79478623