Python web框架 Tornado 學習
阿新 • • 發佈:2019-02-11
最近學習 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" )