tornado 相关说明
,
查找 python3 的路径:
binbin@abc:~$ which python3
/usr/bin/python3
创建虚拟环境 :
创建工程;
用 pycharm 连接:找到这个解释器
设置一下服务顺文件存放目录:
运行 hello world
# -*- coding: utf-8 -*- # 斌彬电脑 # @Time : 2019/2/19 0019 下午 1:22 import tornado.ioloop import tornado.web class MainHandler(tornado.web.RequestHandler): def get(self): self.write('Hello,world') def make_app(): return tornado.web.Application({ (r'/', MainHandler), }) if __name__ == '__main__': app = make_app() app.listen(8001) tornado.ioloop.IOLoop.current().start()
保存,自动重启
# -*- coding: utf-8 -*- # 斌彬电脑 # @Time : 2019/2/19 0019 下午 1:22 import tornado.ioloop import tornado.web import tornado.options from tornado.options import define,options define('port', default='8001', help='Linstening port', type=int) class MainHandler(tornado.web.RequestHandler): def get(self): self.write('Hello,world') # 重写 Application class Application(tornado.web.Application): def __init__(self): handlers = [ (r'/', MainHandler), ] settings = dict( debug = True )
# 继承父类 super().__init__(handlers, **settings) application = Application() if __name__ == '__main__': tornado.options.parse_command_line() # 处理端口 application.listen(options.port) print(options.port) tornado.ioloop.IOLoop.current().start()
创建三个页面,放在 模板文件下
在模板下创建 base 模板
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>{% block title %}Tonato title{% end %} </title> </head> <body> {% block content %}Body of base{% end %} </body> </html>
模板文件下创建三个 html 文件,继承 base.html
{% extends 'base.html' %}
{% block title %}PostHandler{% end %}
{% block content %}
<h3>单个图片详情页面,第{{ post_id }}页</h3>
{% end %}
{% extends 'base.html' %} {% block title %}ExploreHandler{% end %} {% block content %} <h3>发现或最近上传的图片页面</h3> {% end %}
{% extends 'base.html' %} {% block title %}index{% end %} {% block content %} <h3>这是首页</h3> {% end %}
app.py 文件
# -*- coding: utf-8 -*- # 斌彬电脑 # @Time : 2019/2/19 0019 下午 1:22 import tornado.ioloop import tornado.web import tornado.options from tornado.options import define,options define('port', default='8001', help='Linstening port', type=int) # 第一个页面 class indexHandler(tornado.web.RequestHandler): ''' 首页,所关注的用户图片流 ''' def get(self): self.render('index.html') # 第二个页面 class ExploreHandler(tornado.web.RequestHandler): ''' 发现或最近上传的图片页面 ''' def get(self): self.render('explore.html') # 第三个页面 class PostHandler(tornado.web.RequestHandler): ''' 单个图片详情页面 ''' def get(self, post_id): # 用正则匹配到的 post _id 传到模板里 self.render('post_2.html', post_id=post_id) # 重写 Application class Application(tornado.web.Application): def __init__(self): handlers = [ (r'/', indexHandler), (r'/explore', ExploreHandler), # 正则匹配用户输入,0-9 的任意数字,一个或多个 (r'/post/(?P<post_id>[0-9]+)', PostHandler), ] # 配置 settings = dict( debug = True, template_path = 'templates', # 模板文件 ) super().__init__(handlers, **settings) application = Application() if __name__ == '__main__': tornado.options.parse_command_line() # 处理端口 application.listen(options.port) print(options.port) tornado.ioloop.IOLoop.current().start()