| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- """
- example02.py - 路由解析
- """
- import os
- import random
- import tornado.ioloop
- import tornado.web
- from tornado.options import define, options, parse_command_line
- # 定义默认端口
- define('port', default=8000, type=int)
- class SayingHandler(tornado.web.RequestHandler):
- """自定义请求处理器"""
- def get(self):
- sayings = [
- '世上没有绝望的处境,只有对处境绝望的人',
- '人生的道路在态度的岔口一分为二,从此通向成功或失败',
- '所谓措手不及,不是说没有时间准备,而是有时间的时候没有准备',
- '那些你认为不靠谱的人生里,充满你没有勇气做的事',
- '在自己喜欢的时间里,按照自己喜欢的方式,去做自己喜欢做的事,这便是自由',
- '有些人不属于自己,但是遇见了也弥足珍贵'
- ]
- # 渲染index.html模板页
- self.render('index.html', message=random.choice(sayings))
- class WeatherHandler(tornado.web.RequestHandler):
- """自定义请求处理器"""
- def get(self, city):
- # Tornado框架会自动处理百分号编码的问题
- weathers = {
- '北京': {'temperature': '-4~4', 'pollution': '195 中度污染'},
- '成都': {'temperature': '3~9', 'pollution': '53 良'},
- '深圳': {'temperature': '20~25', 'pollution': '25 优'},
- '广州': {'temperature': '18~23', 'pollution': '56 良'},
- '上海': {'temperature': '6~8', 'pollution': '65 良'}
- }
- if city in weathers:
- self.render('weather.html', city=city, weather=weathers[city])
- else:
- self.render('index.html', message=f'没有{city}的天气信息')
- class ErrorHandler(tornado.web.RequestHandler):
- """自定义请求处理器"""
- def get(self):
- # 重定向到指定的路径
- self.redirect('/saying')
- def main():
- """主函数"""
- parse_command_line()
- app = tornado.web.Application(
- # handlers是按列表中的顺序依次进行匹配的
- handlers=[
- (r'/saying/?', SayingHandler),
- (r'/weather/([^/]{2,})/?', WeatherHandler),
- (r'/.+', ErrorHandler),
- ],
- # 通过template_path参数设置模板页的路径
- template_path=os.path.join(os.path.dirname(__file__), 'templates')
- )
- app.listen(options.port)
- tornado.ioloop.IOLoop.current().start()
- if __name__ == '__main__':
- main()
|