Tornado_01初识

一.Tornado:

Tornado是一个Python Web框架和异步网络库,Tornado 和主流Web 服务器框架有着明显的区别:它是非阻塞式服务器,而且速度相当快。通过使用非阻塞网络IO,Tornado 每秒可以处理数以千计的连接,使其非常适合 长时间轮询, WebSocket和其他需要与每个用户建立长期连接的应用程序。因此 Tornado是实时Web服务的高性能框架。

二.安装

pip install tornado -i  https://pypi.tuna.tsinghua.edu.cn/simple/

三.官方文档

https://www.tornadoweb.org/en/stable/

四.pdf文档

中文文档:https://www.bookstack.cn/read/tornado-zh/README.md
英文文档(提取码:torn):https://pan.baidu.com/s/10rWuvZdCBCqNSf4-x33yeQ 

五.简单示例

tornado_project/test1.py

# 1.导入需要的模块包

import tornado.web
import tornado.ioloop


# 2.定义处理类
class IndexHandler(tornado.web.RequestHandler):
    # 接收GET方式处理
    def get(self, *args, **kwargs):
        self.write('Hello Tornado!')


# 3.设置路由/创建application对象
app = tornado.web.Application([
    (r'/', IndexHandler)
])
# 4.绑定监听端口号
app.listen(8000)

# 5.启动监听
tornado.ioloop.IOLoop.instance().start()

输出:
在这里插入图片描述

六.请求与处理底层构析流程

在这里插入图片描述

七.获取GET请求

tornado_project/test2.py

"""
登陆功能
"""
# 导入模块
import tornado.web
import tornado.ioloop


# 定义登陆页处理类
class IndexHanlder(tornado.web.RequestHandler):
    def get(self, *args, **kwargs):
        self.render("templates/login.html")


# 定义获取表单值类
class LoginHandler(tornado.web.RequestHandler):
    def get(self, *args, **kwargs):
        # 获取请求参数
        uname = self.get_argument('uname')
        pwd = self.get_argument('pwd')
        # 获取请求的某个参数
        # uname = self.get_query_argument('uname')
        # 获取复选参数(返回列表)/前端复选框提交name相同但value不同的值
        # uname = self.get_arguments('uname')
        # 注意:所有获取请求方法带s代表作用于获取属性相同值不同的情况
        # uname = self.get_query_arguments('uname')
        print(uname, pwd)
        self.write('账号:{0}密码:{1}'.format(uname, pwd))

# 设置路由并创建对象
app = tornado.web.Application([
    ('/', IndexHanlder),
    ('/login/', LoginHandler),
])

# 绑定监听
app.listen(8000)

# 启动监听(以下方式同理)
tornado.ioloop.IOLoop.current().start()
# tornado.ioloop.IOLoop.instance().start()

tornado_project/templates/login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登陆</title>
</head>
<body>
<form action="/login/" method="get">
    <p>
        账号: <input type="text" name="uname">
<!--        账号: <input type="text" name="uname">-->
    </p>
    <p>
        密码: <input type="password" name="pwd">
    </p>
    <p>
        &emsp;&emsp;<input type="submit" value="登陆">
    </p>
</form>
</body>
</html>

八.获取POST请求

tornado_project/test2.py

"""
登陆功能
"""
# 导入模块
import tornado.web
import tornado.ioloop


# 定义登陆页处理类
class IndexHanlder(tornado.web.RequestHandler):
    def get(self, *args, **kwargs):
        self.render("templates/login.html")


# 定义获取表单值类
class LoginHandler(tornado.web.RequestHandler):
    def post(self, *args, **kwargs):
        # GET/POST通用 self.get_argument()
        # uanme = self.get_argument('uname')
        # pwd = self.get_argument('pwd')
        # 获取post值 获取请求体body中的参数
        uname = self.get_body_argument('uname')
        pwd = self.get_body_argument('pwd')
        # 模仿数据校验
        if uname == 'nini' and pwd == '123':
            self.write('登陆成功')
        else:
            self.write('账号或密码有误,请重新尝试')


# 设置路由并创建对象
app = tornado.web.Application([
    ('/', IndexHanlder),
    ('/login/', LoginHandler),
])

# 绑定监听
app.listen(8000)

# 启动监听(以下方式同理)
tornado.ioloop.IOLoop.current().start()
# tornado.ioloop.IOLoop.instance().start()

tornado_project/templates/login.html
注意:form表单method=post即可
说明:django自带django_csrftoken认证,tornado需要自己去写。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登陆</title>
</head>
<body>
<form action="/login/" method="post">
    <p>
        账号: <input type="text" name="uname">
<!--        账号: <input type="text" name="uname">-->
    </p>
    <p>
        密码: <input type="password" name="pwd">
    </p>
    <p>
        &emsp;&emsp;<input type="submit" value="登陆">
    </p>
</form>
</body>
</html>

说明: 此文献为本人学习笔记,仅供参考,如有错误,欢迎留言。

猜你喜欢

转载自blog.csdn.net/weixin_44053341/article/details/114410967