# 安裝css
pip insatll tornado
# 主文件 web_server.pyhtml
#!/usr/bin/env python # encoding: utf-8 import tornado.httpserver import tornado.options import tornado.web from tornado.options import define,options import sys,os,re
from apicode import Apicode # 具體本身業務用到的模塊!!
reload(sys) sys.setdefaultencoding('utf-8') # 定義默認調用端口爲8088 define("port",default=8088,help="run on the given port",type=int) # 驗證碼演示demo class VcodeHandler(tornado.web.RequestHandler): # get 請求 def get(self): result = self.get_argument("result",{}) city = self.get_argument('city', u'重慶') self.render("input_code.html", city=city, result=result) # post 請求 def post(self): result = {'code':0 , 'msg': 'success', 'result': ''} # 獲取參數 city = self.get_argument('city', 'CQ') method = self.get_argument('method', 'LR') detail = eval(self.get_argument('detail', False)) imgUrl = self.get_argument('imgUrl', '') imgFile = self.request.files.get('imgfile', []) fname = '' # url 方式 if imgUrl and re.search('.+\.(jpg|png|bmp|gif)', imgUrl): fname = './static/uploads/%s' % imgUrl.split('/')[-1] result['result']= vcode.predict_url(city, imgUrl, detail, method) # 上傳文件方式 elif imgFile: for img in imgFile: with open('./static/uploads/' + img['filename'], 'wb') as fw: fw.write(img['body']) fname = './static/uploads/' + img['filename'] result['result'] = vcode.predict(city, fname, detail, method) else: errorMsg = "上傳驗證碼圖片文件錯誤或url圖片格式不正確" result['code'] = '-1' result['msg'] = errorMsg self.render("output_code.html", city=city, source=fname, detail=detail, method=method, result=result) # 驗證碼調用api class VcodeApiHandler(tornado.web.RequestHandler): def get(self): result = {'code': 1000 , 'msg': '調用參數錯誤, 請用post方式請求, city & imgfile 參數', 'result': '使用說明: http://gitlab.tangees.com/miaoweihong/verify-code'} json_result = tornado.escape.json_encode(result) self.write(json_result) def post(self): result = {'code': 0 , 'msg': 'success', 'result': ''} city = self.get_argument('city', 'CQ') method = self.get_argument('method', 'LR') detail = eval(self.get_argument('detail', False)) imgFile = self.request.files.get('imgfile', []) if imgFile: for img in imgFile: with open('./static/uploads/' + img['filename'], 'wb') as fw: fw.write(img['body']) fname = './static/uploads/' + img['filename'] try: result['result'] = vcode.predict(city, fname, detail, method) except Exception as e: result['code'] = 1001 result['msg'] = '上傳文件內容有誤' + str(e) else: result['code'] = 1002 result['msg'] = '沒有文件內容' # 返回json結果 json_result = tornado.escape.json_encode(result) self.write(json_result) class TestHandler(tornado.web.RequestHandler): def get(self): self.write('hello, jkmiao') if __name__ == "__main__": # 引入自行定義的模塊 vcode = Apicode() tornado.options.parse_command_line() app = tornado.web.Application( handlers = [(r'/vcode',VcodeHandler), (r'/vcodeapi', VcodeApiHandler)], # url匹配 template_path = os.path.join(os.path.dirname(__file__),"templates"), # 定義視圖頁面地址,放 html文件 static_path = os.path.join(os.path.dirname(__file__), "static"), # 定義靜態模板,放 css,js等文件 debug=True, # 是否爲debug模式 autoescape=None, # 不設置轉義字符 ) http_server = tornado.httpserver.HTTPServer(app) http_server.listen(options.port) print "starting tornado at port http://127.0.0.1:%d" % options.port tornado.ioloop.IOLoop.instance().start()
搞定!python
教程git
===============最基本 hello world ==================web
代碼清單:hello.py import tornado.httpserver import tornado.ioloop import tornado.options import tornado.web from tornado.options import define, options define("port", default=8000, help="run on the given port", type=int) class IndexHandler(tornado.web.RequestHandler): def get(self): greeting = self.get_argument('greeting', 'Hello') self.write(greeting + ', friendly user!') if __name__ == "__main__": tornado.options.parse_command_line() app = tornado.web.Application(handlers=[(r"/", IndexHandler)]) http_server = tornado.httpserver.HTTPServer(app) http_server.listen(options.port) tornado.ioloop.IOLoop.instance().start()