当前位置 博文首页 > 孤寒者的博客:First——tornaod环境搭建及基本框架搭建——成功

    孤寒者的博客:First——tornaod环境搭建及基本框架搭建——成功

    作者:[db:作者] 时间:2021-07-25 18:34

    tornado官方文档:
    官方英文
    中文4.3

    1.项目环境搭建

    与本人django项目环境搭建步骤一样(不同点如下!):点我立即跳转!

    (1)windows本地存储项目的文件夹为:tudo_first

    (2)ubuntu下创建的tornado项目环境

    ①创建项目运行的python虚拟环境(指定python版本为python3)

    ubuntu命令:

    mkvirtualenv -p python3 tudo
    

    在这里插入图片描述

    ②安装tornado库(指定版本为5.1.1)

    ubuntu命令:

    pip install tornado==5.1.1
    

    在这里插入图片描述

    ③成功!

    ubuntu查看安装包命令:

    pip list
    

    在这里插入图片描述

    (3)ubuntu中存储项目的文件夹为:tudo_file

    2.tornado搭建测试

    ①测试代码(hello.py):

    # 运行tornado的库
    import tornado.ioloop
    
    import tornado.web
    
    
    # HTTP请求处理   类似Django里的类视图
    class MainHandler(tornado.web.RequestHandler):
        def get(self):
            self.write("Hello, world")
    
    
    # 定义接口
    application = tornado.web.Application(
        [(r'/',MainHandler)]
    )
    
    
    if __name__ == '__main__':
        # 定义端口
        application.listen(8080)
        # 运行tornado
        tornado.ioloop.IOLoop.current().start()
    
    
    
    

    ②ubuntu中浏览器访问指定端口(127.0.0.1:8080)出现如下响应即为测试成功——可以进行项目开发!

    在这里插入图片描述

    3.正式进入此tornado项目的搭建之基本框架的搭建

    ①编写tornado运行文件(app.py):

    如果逻辑同测试代码,会造成本py文件会过大的后果——同时包含定义接口及类视图,而且不易区分具体代码块的功能;
    所以,现采用另一种写法——继承并重写定义接口的类tornado.web.Application,使得定义接口与类视图分开编写!!!

    import tornado.ioloop
    import tornado.web
    
    import tornado.options
    
    from tornado.options import define,options
    
    # 导入请求处理类文件
    from handlers import main
    
    # 名字,默认端口,帮助信息,类型
    define('port',default='8000',help='Listeningport',type=int)
    
    # 重写
    class Application(tornado.web.Application):
        def __init__(self):
            handlers = [
                ('/',main.IndexHandler),
                ('/explore',main.ExploreHandler),
                # 定义一个可以传参的接口
                ('/post/(?P<post_id>[0-9]+)',main.PostHandler),
            ]
            settings = dict(
                debug=True,
                # 配置模板路径
                template_path='templates',
                # 配置静态文件路径
                static_path='static'
            )
            # 继承父类
            super().__init__(handlers, **settings)
    application = Application()
    
    
    if __name__ == '__main__':
        # 控制台打印访问记录
        tornado.options.parse_command_line()
        # 端口
        application.listen(options.port)
        print('Server start on port {}'.format(options.port))
        tornado.ioloop.IOLoop.current().start()
    
    

    ②创建handlers包,并在里面创建main.py文件用于编写业务逻辑:

    在这里插入图片描述

    import tornado.web
    
    
    class IndexHandler(tornado.web.RequestHandler):
        def get(self, *args, **kwargs):
            self.render('index.html')
    
    
    class ExploreHandler(tornado.web.RequestHandler):
        def get(self, *args, **kwargs):
            self.render('explore.html')
    
    
    class PostHandler(tornado.web.RequestHandler):
        def get(self, post_id):
        	# 传递参数到post.html
            self.render('post.html',post_id=post_id)
    
    

    ③创建模板文件(templates文件夹里):

    (1)父模板——用于模板继承(base.html):

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>{% block title %}Tornado Title{% end %}</title>
    </head>
    <body>
    {% block content %}Default body of base {% end %}
    
    
    </body>
    </html>
    

    (2)index.html——首页:

    {% extends 'base.html' %}
    
    
    {% block title %} index page{% end %}
    
    {% block content %}
    I am index
    {% end %}
    
    

    (3)explore.html——发现页:

    {% extends 'base.html'%}
    
    {% block title %}explore page{% end %}
    
    {% block content %}
    I am explore
    {% end %}
    
    

    (4)post.html——详情页:(展示接收到的参数post_id)

    {% extends 'base.html' %}
    
    {% block title %} post page {% end %}
    {% block content %}
    I am post {{ post_id }}
    {% end %}
    

    ④创建static文件用于存放js和css

    ⑤运行项目:(运行app.py文件即可!)

    在这里插入图片描述在这里插入图片描述在这里插入图片描述

    cs