美文网首页
Tornado框架的web应用框架(二)

Tornado框架的web应用框架(二)

作者: 梦捷者 | 来源:发表于2020-04-15 08:46 被阅读0次

一、Tornado框架的简介

参考文档:https://tornado-zh.readthedocs.io/zh/latest/guide/intro.html
1、tornado框架的特点
(1)tornado龙卷风是一个开源的网络服务器框架;
(2)Tornado是使用Python编写的Web服务器兼Web应用框架;
(3)tornado实现了异步非阻塞,并且天然支持websocket协议
(4)代码是异步实现的,原始的操作是同步操作
2、tonado框架组成部分(4个部分)
(1)web框架 (包括创建web应用的 RequestHandler 类,还有很多其他支持的类).
(2)HTTP的客户端和服务端实现 (HTTPServer and AsyncHTTPClient).
(3)异步网络库 (IOLoop and IOStream), 为HTTP组件提供构建模块,也可以用来实现其他协议
(4)协程库 (tornado.gen) 允许异步代码写的更直接而不用链式回调的方式.

二、Tornado的web应用框架

参考文档:https://tornado-zh.readthedocs.io/zh/latest/guide/structure.html

1、web应用框架中的相应的一些类
  • 在web应用框架中最主要的类为RequestHandler和Application类。

  • Application 对象是负责全局配置的, 包括映射请求转发给处理程序的路由表。主要的参数 为handlers,即是相应的路由规则。
    Application 对象的重要的两个部分:
    (1)路由表 URL 映射
    (2)关键词参数 settings

  • RequestHandler是进行处理相应的请求方法和响应响应请求路径的响应内容。
    RequestHandler 子类的重要部分如下:
    (1)主入口点:处理HTTP方法(主要是get和post方法)
    (2)产生响应:在相应的方法中产生相应的响应,主要是通过render 或者 write 等。
    (3)错误处理或重定向等。
    (4)每一次进行请求处理前都会创建此类的实例对象。

2、Web 应用基本的知识点

(1)HTTP 方法

  • GET和POST方法
  • HTTP请求(GET、POST、PUT、DELETE、HEAD、OPTIONS)

(2)HTTP 状态码

  • 404 Not Found
  • 400 Bad Request
  • 500 Internal Server Error
  • 200 OK
3、Application中的settings的使用

参考文档:
https://tornado-zh.readthedocs.io/zh/latest/web.html#tornado.web.Application.settings

  • debug:当等于True的时候出错就会在前端页面打印出报错信息(即pycharm中的报错信息就会打印出来),当等于False的时候不会打印,基本只会报404的报错。
  • static_path: 将被提供服务的静态文件所在的文件夹。

三、代码演示实例

app.py的代码如下

import tornado.web
import tornado.ioloop
from tornado.options import options, define, parse_command_line

define('port', default=8000, help="运行端口")


class FirstHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("<h1><span style='color:red'>这是首页面</span></h1>")


class PictureHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("<html><body><img src='/static/images/1.jpg'></body></html>")
        #这里satic前面加上/(正斜杆)是代表绝对路径,如果不加,则代表相对路径,但是在多个路由的时候就会报错。

    def initialize(self):
        print('对象{}创建了'.format(self)) #对象初始化操作


def make_app():
    handlers = [
        (r'/', FirstHandler),
        (r'/picture', PictureHandler)
    ]
    settings = {'debug': True, 'static_path': 'static'}#直接写staic这里是相对路径,这是相对与这个脚本的路径而言的,
    #注意访问的话http://192.168.212.131:8080/static/upload/2.jpg可以直接访问到static目录下的图片
    app = tornado.web.Application(handlers=handlers, **settings)
    return app


if __name__ == '__main__':
    app = make_app()
    # app.listen(8000)
    parse_command_line()#解析命令行参数
    port_new = options.port#options是可以选择命令行的参数
    app.listen(port_new)
    print(type(port_new))
    print("Tornado server running at %s port" % port_new)
    tornado.ioloop.IOLoop.current().start()

注意:
def initialize(self):
print('对象{}创建了'.format(self)) #对象初始化操作
解释:当处理请求调用相应的类的时候就会调用这个方法进行创建类对象

四、在命令行上启动app.py文件

  • python app_demo.py --port=8010
  • 获取app.py的帮助信息:python app.py
  • define('port', default=8000, help="运行端口"),当有default的时候,命令行传入就会自动转入为default的类型,此时default覆盖type。(有的tornado版本可以不要defalut,直接用type进行指定相应类型。)
  • Python pip 批量安装第三方库

相关文章

网友评论

      本文标题:Tornado框架的web应用框架(二)

      本文链接:https://www.haomeiwen.com/subject/bigbyctx.html