一.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>
  <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>
  <input type="submit" value="登陆">
</p>
</form>
</body>
</html>
说明: 此文献为本人学习笔记,仅供参考,如有错误,欢迎留言。