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"
)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章