tornaod环境搭建及基本框架搭建——成功运行第一个基于tornado搭建的服务器框架

举报
孤寒者 发表于 2021/08/31 21:59:17 2021/08/31
【摘要】 tornado官方文档:官方英文中文4.3 1.项目环境搭建与本人django项目环境搭建步骤一样(不同点如下!): (1)windows本地存储项目的文件夹为:tudo_first (2)ubuntu下创建的tornado项目环境 ①创建项目运行的python虚拟环境(指定python版本为python3)ubuntu命令:mkvirtualenv -p python3 tudo ②安装t...

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文件即可!)

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。