写点什么

tornado 环境搭建及基本框架搭建——熟悉的 hello world

作者:孤寒者
  • 2022 年 6 月 11 日
  • 本文字数:1873 字

    阅读完需:约 6 分钟

tornado环境搭建及基本框架搭建——熟悉的hello world

1.项目环境搭建

为了模拟真实工作中项目开发,本专栏项目开发也是采用本地 pycharm 连接远程虚拟机的方式进行开发。环境搭建步同 django 项目环境搭建步骤一样(换汤不换药,之前很详细的讲过了):《2.一步一步教你使用 pycharm 运行起第一个 Django 项目》后面出!


  1. 虚拟机中创建本项目运行的 python 虚拟环境(指定 python 版本为 python3)ubuntu 命令:


mkvirtualenv -p python3 tudo
复制代码


  1. 安装 tornado 库(指定版本为 5.1.1)ubuntu 命令:


pip install tornado==5.1.1
复制代码


  1. ubuntu 查看安装包命令:


pip list
复制代码


2.tornado 项目基本框架搭建

①熟悉的 hello world

  1. 代码(hello.py):


# -*- coding: utf-8 -*-"""__author__ = 孤寒者"""# 运行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()
复制代码


  1. 运行上面的 py 文件后浏览器访问指定端口(127.0.0.1:8080)出现如下响应即为测试成功——可以进行项目开发!


3.本项目基本框架的搭建

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

  • 如果所有代码都像测试代码那样写一起,会造成一个 py 文件过大的后果——同时包含定义接口及类视图等所有代码,而且不易区分具体代码块的功能(当然,如果你非要那样做也不是不可以,tornado 就是这么随意~);

  • 所以,现采用另一种写法——继承并重写定义接口的类 tornado.web.Application,使得定义接口与类视图分开编写!!!


# -*- coding: utf-8 -*-"""__author__ = 孤寒者"""import tornado.ioloopimport 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 文件编写业务逻辑:


# -*- coding: utf-8 -*-"""__author__ = 孤寒者"""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>
复制代码


  1. 首页(index.html):


{% extends 'base.html' %}

{% block title %} index page{% end %}
{% block content %}I am index{% end %}
复制代码


  1. 发现页(explore.html):


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


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


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

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

⑤运行项目:



  • 完整专栏在 CSDN 更新,有兴趣的可以去看~

发布于: 刚刚阅读数: 3
用户头像

孤寒者

关注

同名微信公众号【孤寒者】 2021.11.09 加入

HDZ核心组成员 华为云享专家、Python全栈领域博主 CSDN原力计划作者、CSDN全栈领域优质创作者 专注分享Python领域原创系列文章,如Python爬虫、Django、tornado、flask等。

评论

发布
暂无评论
tornado环境搭建及基本框架搭建——熟悉的hello world_Python_孤寒者_InfoQ写作社区