天天看點

Tornado擷取url路由【application()】傳過來的參數

'''
 def initialize(self,'url路由參數','url路由參數'):#URL路由參數的名字必須要與這兒的名字相同
    self.greeting = greeting
    self.info = info
'''

# tornado路由清單的示範


import tornado
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
from tornado.options import define, options, parse_config_file
from tornado.web import Application, RequestHandler, url


# 用來響應使用者請求
class IndexHandler(RequestHandler):
    #響應以get方式發起的請求
    def get(self, *args, **kwargs):
        # 伺服器給浏覽器的響應内容
        self.write('<a href=/python>hello python</a>')
    #響應以post方式發起的請求
    def post(self, *args, **kwargs):
        pass

#用來響應使用者/java請求
class JavaHandler(RequestHandler):
    #重寫RequestHandler中initialize方法
    #擷取動态設定的參數(greeting,info)
    def initialize(self,greeting,info):   #動态參數要與url路由中設定的參數必須一樣
        self.greeting = greeting
        self.info = info

    def get(self, *args, **kwargs):
        #write方法隻能接受一個字元串類型的參數,但可以通過字元串的拼接實作一個參數
        self.write(self.greeting+','+self.info)

    def post(self, *args, **kwargs):
        pass

#用來響應使用者/python請求
class PythonHandler(RequestHandler):
    def get(self, *args, **kwargs):
		#write可以有多個,不會出現覆寫的情況
        self.write('你好, 拍森')
        self.write('<br>')
        self.write('<a href=%s>Jump To Java</a>' % self.reverse_url('java_url'))  #反向url解析,對應application中的路由
    def post(self, *args, **kwargs):
        pass

#定義一個變量,用來代表端口号
define('port',type=int,default=8888,multiple=False)
#定義一個變量,用來代表資料庫的連接配接資訊(使用者名,密碼,端口号,資料庫名稱)
define('db',multiple=True,type=str,default=[])
#從指定的配置檔案中,讀取port的内容
parse_config_file('config')

#建立Application對象,進行若幹個對伺服器的設定
#例如:路由清單,模闆路徑,靜态資源路徑等



app = Application([('/',IndexHandler),
					#加上url之後,我們就可以為url設定一個name屬性
                   url('/java',JavaHandler,{'greeting':'你好','info':'家蛙'},name='java_url'),
                   ('/python',PythonHandler)])
#建立伺服器程式
server = HTTPServer(app)
#伺服器監聽某個端口(建議使用10000以上的端口)
server.listen(options.port)#10000
#列印獲得的資料庫參數
print('資料庫參數:',options.db)
#啟動伺服器(在目前程序中啟動伺服器)
IOLoop.current().start()
           

繼續閱讀