Python Tornado简介

Tornado安装

pip3 install tornado

初识Tornado

首先打开pycharm,新建一个干净的project

新建一个py文件:

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):  # 类似于Django里面的CBV
    def get(self):  # get方法
        self.write("Hello, world")

application = tornado.web.Application([  # 类似于Django里面的路由系统
    (r"/index", MainHandler),
])

if __name__ == "__main__":
    application.listen(8888)
    tornado.ioloop.IOLoop.instance().start()  # 启动

app.py

运行文件并打开浏览器访问网址:

运行该脚本,依次执行:

  • 创建一个Application对象,并把一个正则表达式‘/‘和类名MainHandler传入构造函数:tornado.web.Application(...)  
  • 执行Application对象的listen(...)方法,即:application.listen(8888)
  • 执行IOLoop类的类的 start() 方法,即:tornado.ioloop.IOLoop.instance().start()

整个过程其实就是在创建一个socket服务端并监听8888端口,当请求到来时,根据请求中的url和请求方式(post、get或put等)来指定相应的类中的方法来处理本次请求,在上述demo中只为url为http://127.0.0.1:8888/index的请求指定了处理类MainHandler(具体如何寻找见下文)。所以,在浏览器上访问:http://127.0.0.1:8888/index,则服务器给浏览器就会返回 Hello,world ,否则返回 404: Not Found(tornado内部定义的值), 即完成一次http请求和响应。

由上述分析,我们将整个Web框架分为两大部分:

  • 待请求阶段,即:创建服务端socket并监听端口
  • 处理请求阶段,即:当有客户端连接时,接受请求,并根据请求的不同做出相应的相应

经典的Login案例

首先,创建模版文件夹和模版文件:

login.html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form method="POST" action="/login">
        <input type="text" name="username" />
        <input type="submit" value="提交" />
    </form>
</body>
</html>

新建一个路由:

    (r"/login", LoginHandler),

新建CBV:

class LoginHandler(tornado.web.RequestHandler):
    def get(self):
        self.render("login.html")

    def post(self, *args, **kwargs):
        # 获取url中以GET形式传递的数据
        self.get_query_argument()
        self.get_query_arguments()
        # 去请求体中获取传递的数据
        self.get_body_argument()
        self.get_body_arguments()
        # 去get&post双方去取数据
        user = self.get_argument(‘username‘)
        print(user)
        self.redirect(‘www.baidu.com‘)

注册模版文件路径:

# 申明settings,字典格式
settings = {
    ‘template_path‘: ‘tmp‘
}

# 注册进tornado内部
application = tornado.web.Application([
    (r"/index", MainHandler),
    (r"/login", LoginHandler),
], **settings)

整体app文件:

#!/usr/bin/env python3
# encoding: utf-8
# Author: Dandy

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

class LoginHandler(tornado.web.RequestHandler):
    def get(self):
        self.render("login.html")

    def post(self, *args, **kwargs):
        # 获取url中以GET形式传递的数据
        self.get_query_argument()
        self.get_query_arguments()
        # 去请求体中获取传递的数据
        self.get_body_argument()
        self.get_body_arguments()
        # 去get&post双方去取数据
        user = self.get_argument(‘username‘)
        print(user)
        self.redirect(‘www.baidu.com‘)

settings = {
    ‘template_path‘: ‘tmp‘
}

application = tornado.web.Application([
    (r"/index", MainHandler),
    (r"/login", LoginHandler),
], **settings)

if __name__ == "__main__":
    application.listen(8888)
    tornado.ioloop.IOLoop.instance().start()

此时便可执行

关于静态文件

首先添加静态文件夹,并放入一张图片

静态路径注册:

settings = {
    ‘template_path‘: ‘tmp‘,
    ‘static_path‘: ‘statics‘
}

login页面加入图片、注意以下路径写的是static,标准用法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form method="POST" action="/login">
        <input type="text" name="username" />
        <input type="submit" value="提交" />
    </form>
    <img src="/static/炫雅.jpeg" />
</body>
</html>

此时访问页面

那能不能不用static作为静态文件夹名称呢?

答案当然是可以的,只需要这样注册:

settings = {
    ‘template_path‘: ‘tmp‘,
    ‘static_path‘: ‘statics‘,
    ‘static_url_prefix‘: ‘/jingtai/‘,  # 这里就是用户自定义的静态路径名称
}

再去修改login网页里的就好了。

原文地址:https://www.cnblogs.com/wuzdandz/p/9416889.html

时间: 2024-11-01 13:36:36

Python Tornado简介的相关文章

Python学习系列 (第一章):Python 的简介

一: Python 的简介: python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. 二:Python的应用领域: web 开发: Django\pyramid\Tornado\Bottle\Flask\WebPy 网络编程: twisted\Requests\scrapy\paramiko 科学运算: Scipy\pandas\lpython GUI图形开

python tornado 自定义session

python tornado 中需要自定session session原理: 1.客户端发送请求信息,服务端为用户端生成一个加密随机字符串random_str,然后将用户的信息作为这个随机字符串random_str的值,增加用户信息的安全性: 2.将random_str做为cookie写入给客户端,然后服务端进行判断用户携带cookie的情况 1 import tornado.web 2 import tornado.ioloop 3 4 class Session(): 5 def __ini

Python的简介与入门

Python的简介与入门 ·Python是一种结合了解释.性编译性.互动性和面向对象多种特性的脚本语言.对于编程初学者而言,Python易于阅读与学习,并且支持广泛的应用程序的开发与拥有支持多种平台的广泛的基础数据库. ·安装Python在Windows环境下  1.进入Python 官方网站:https://www.python.org/                 2.点击Downloads==> Downloads for Windows==> Python 3.6.2  3.下载安

以写代学:python 模块简介&输出用户指定位数密码的脚本

什么是模块 (1)模块是从逻辑上组织python代码的形式 (2)当代码量变的相当大的时候,最好把代码分成一些有组织的代码段,前提是保证它们的彼此交互 (3)这些代码段之间有一定的联系,可能是一个包含数据成员和方法的类,也可能是一组相关但彼此独立的操作函数 (4)模块名不能乱起,字母数字下划线组成,首字母不能是数字 导入模块 (1)使用import导入模块,模块被导入后,程序会自动生成pyc的字节码文件以提升性能 (2)模块属性通过"模块名.属性"的方法调用,如果仅需要模块中的某些属性

python学习---简介

http://www.cnblogs.com/wuguanglei/p/3866583.html http://www.cnblogs.com/wuguanglei/p/3866583.html ok? python学习---简介

Python的简介以及安装和第一个程序以及用法

Python的简介: 1.Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.自从20世纪90年代初Python语言诞生至今,它逐渐被广泛应用于处理系统管理任务和Web编程.Python已经成为最受欢迎的程序设计语言之一.2011年1月,它被TIOBE编程语言排行榜评为2010年度语言.自从2004年以后,python的使用率是呈线性增长. 2.Python在设计上坚持了清晰划一的风格,Python的作者有意的设计限制性很强的语法,使得不好的编程习惯(例如if语句的下一行不向右缩

Python Tornado

按照http://www.tornadoweb.cn/所提供的方法下载安装后编写如下程序: import tornado.ioloop import tornado.web class MainHandler(tornado.web.RequestHandler): def get(self): self.write("Hello, world") class TestHandler(tornado.web.RequestHandler): def get(self): self.wr

Python正则表达式简介

Python正则表达式简介 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 就其本质而言,正则表达式(或RE模块)是一种小型的,高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过re模块实现.正则表达式模式被编译成一系列的字节码,然后由C编写的匹配引擎执行. 原文地址:https://www.cnblogs.com/yinzhengjie/p/8542361.html

Python 基础 —— 简介

Python 基础 简介 python的诞生 创建人: Guido van Rossum (荷兰人) 时 间: 1989年 python语言的应用领域: 系统运维 网络编程(搜索引擎,爬虫,服务器编程) 科学计算 人工智能,机器人 web 开发 云计算 大数据及数据库编程 教育 游戏,图像处理 其它... 优缺点: 优点 缺点 面向对象(Java, C++, Python, C#, Swift) 与 C/C++相比,执行速度不够快 免费 不能封闭源代码 可移植 (Windows, Linux,