【2019-05-29】tornado简单使用笔记
[历史归档]本文原发布于 cstriker1407.info 个人博客内容为历史存档仅供参考。发布时间2019-05-29 标题tornado简单使用笔记分类编程 / web / tornado 标签python jython·bootstrap·tornadotornado简单使用笔记tornado是什么安装方法tornado简单DEMOhtml页面输出方法使用python代码返回静态html页面使用python代码返回定制html页面使用tornado的render功能返回html页面和bootstrap一起使用最近要用python来做一个WEB服务器找来找去感觉tornado上手比较简单这里简单笔记下使用要点。tornado是什么Tornado是使用Python编写的一个强大的、可扩展的Web服务器。入门文档【http://shouce.jb51.net/tornado/index.html 】官方文档【 https://tornado-zh.readthedocs.io/zh/latest/index.html 】安装方法tornado是一个python组件因此最简单方式就是pip安装。#pip3 install tornadotornado简单DEMO根据入门文档我们可以非常快速的实现一个WEB服务器新建hello_tornado.py代码如下#!/usr/bin/python3# -*- coding: UTF-8 -*-importsysimportosimporttornado.httpserverimporttornado.ioloopimporttornado.optionsimporttornado.webfromtornado.templateimportTemplatedefhandler_list():return[(r/hello_tornado,hello_tornado_handler_main),]classhello_tornado_handler_main(tornado.web.RequestHandler):defget(self):self.write(Rev Get Request:{}.format(self.request))if__name____main__:apptornado.web.Application(handlershandler_list(),debugTrue)http_servertornado.httpserver.HTTPServer(app)http_server.listen(8000)tornado.ioloop.IOLoop.instance().start()然后执行命令#python3 hello_tornado.py我们访问http://127.0.0.1:8000/hello_tornado可以看到结果html页面输出方法tornado有好几种方式可以输出html页面这里简单笔记下。使用python代码返回静态html页面这种方式很简单直接把html内容返回即可。classhello_tornado_handler_main(tornado.web.RequestHandler):defget(self):self.write( !DOCTYPE html html bodyHello world/body /html )显示如下使用python代码返回定制html页面这种方式是利用tornado的template功能来替换html中的字符串。class hello_tornado_handler_main(tornado.web.RequestHandler): def get(self): contentTemplate(!DOCTYPE htmlhtmlbodyhello,{{name1}}and{{name2}}/body/html)self.write(content.generate(name1LiLei,name2HanMM))显示如下这两种方式都不是太友好因为将html写入到代码中会耦合显示与业务所以我们一般使用下面的这种方式。使用tornado的render功能返回html页面新建一个hello_tornado.html文件内容如下!DOCTYPEhtmlhtmlbodyhello,{{name1}} and {{name2}}/body/htmlpython代码为classhello_tornado_handler_main(tornado.web.RequestHandler):defget(self):self.render(htmls/hello_tornado.html,name1LiLei,name2HanMM)文件结构├── hello_tornado.py ├── htmls │ ├── hello_tornado.html显示如下和bootstrap一起使用如果要和bootstrap同时使用可以设置 static_path 变量。hello_tornado.html内容!DOCTYPEhtmlhtmllangzh-CNheadmetacharsetutf-8metahttp-equivX-UA-CompatiblecontentIEedgemetanameviewportcontentwidthdevice-width, initial-scale1!-- Bootstrap --link href{{ static_url(bootstrap-3.3.7-dist/css/bootstrap.min.css) }} relstylesheet link href{{ static_url(custom_css/ie10-viewport-bug-workaround.css) }} relstylesheet link href{{ static_url(custom_css/navbar-fixed-top.css) }} relstylesheet/headbodydivclasscontainerdivclasspanel panel-defaultdivclasspanel-headingchildren table/divtableclasstable table-borderedtbodytrthname/ththinfo/th/tr{% for child_info in children_infos %}trtd{{child_info[0]}}/tdtd{{child_info[1]}}/td/tr{% end %}/tbody/table/div/divscript src{{ static_url(jquery/1.12.4/jquery.min.js) }}/scriptscript src{{ static_url(bootstrap-3.3.7-dist/js/bootstrap.min.js) }}/script/body/htmlhello_tornado.py完整内容#!/usr/bin/python3# -*- coding: UTF-8 -*-importsysimportosimporttornado.httpserverimporttornado.ioloopimporttornado.optionsimporttornado.webfromtornado.templateimportTemplatedefhandler_list():return[(r/hello_tornado,hello_tornado_handler_main),]classhello_tornado_handler_main(tornado.web.RequestHandler):defget(self):self.render(htmls/hello_tornado.html,children_infos((LiLei,boy),(HanMM,girl)))if__name____main__:apptornado.web.Application(handlershandler_list(),static_pathos.path.join(os.path.dirname(__file__),htmls),debugTrue)http_servertornado.httpserver.HTTPServer(app)http_server.listen(8000)tornado.ioloop.IOLoop.instance().start()文件结构├── hello_tornado.py ├── htmls │ ├── bootstrap-3.3.7-dist │ │ ├── css │ │ │ ├── bootstrap.css │ │ │ ├── bootstrap.css.map │ │ │ ├── bootstrap.min.css │ │ │ ├── bootstrap.min.css.map │ │ │ ├── bootstrap-theme.css │ │ │ ├── bootstrap-theme.css.map │ │ │ ├── bootstrap-theme.min.css │ │ │ └── bootstrap-theme.min.css.map │ │ ├── fonts │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ └── glyphicons-halflings-regular.woff2 │ │ └── js │ │ ├── bootstrap.js │ │ ├── bootstrap.min.js │ │ └── npm.js │ ├── custom_css │ │ ├── ie10-viewport-bug-workaround.css │ │ └── navbar-fixed-top.css │ ├── hello_tornado.html │ ├── jquery └── 1.12.4 └── jquery.min.js显示如下

相关新闻

栈的应用(括号匹配)

栈的应用(括号匹配)

文章目录核心思想代码实现查考方式方式一:手动模拟栈的变化(考察“栈内元素”)方式二:考察“失败”的边界条件(三种失败模式)方式三:算法的时间/空间复杂度核心思想 逻辑本质:括号匹…

2026/9/13 8:34:45 阅读更多 →
【2018-08-18】浅论各种调试接口(SWD、JTAG、Jlink、Ulink、STlink)的区别

【2018-08-18】浅论各种调试接口(SWD、JTAG、Jlink、Ulink、STlink)的区别

[历史归档] 本文原发布于 cstriker1407.info 个人博客,内容为历史存档,仅供参考。 发布时间: 2018-08-18 | 标题:浅论各种调试接口(SWD、JTAG、Jlink、Ulink、STlink)的区别 | 分…

2026/9/22 9:31:23 阅读更多 →
Intel 13/14代酷睿电压问题解析与BIOS优化指南

Intel 13/14代酷睿电压问题解析与BIOS优化指南

1. Intel 13/14代酷睿"缩缸"事件始末2023年下半年开始,大量用户反馈搭载Intel第13代(Raptor Lake)和第14代(Raptor Lake Refresh)酷睿处理器的系统出现稳定性问题。主要表现为:高负载场景下&…

2026/9/21 5:10:29 阅读更多 →

最新新闻

C++学习札记:知识点梳理与心得总结 指针

C++学习札记:知识点梳理与心得总结 指针

指针概念可以通过指针间接访问内存内部编号都是从0开始记录的 一般用16进制数字表示 可以利用指针变量保存地址指针变量的定义和使用语法 数据类型*变量名让指针记录某变量的地址P&a可以通过解引用的方式找到地址指向的内存 {指针前加*} 通过*操作指针变量指向的内存*&…

2026/9/24 6:01:11 阅读更多 →
STM32F4无感FOC中PLL替代反正切:解决滑膜观测器角度抖动

STM32F4无感FOC中PLL替代反正切:解决滑膜观测器角度抖动

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 6:00:10 阅读更多 →
AIC8800DC驱动移植排错:从SDIO枚举到休眠睡死的完整链路

AIC8800DC驱动移植排错:从SDIO枚举到休眠睡死的完整链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 6:00:10 阅读更多 →
【Python课程设计/毕业设计】基于 Python 爬虫的小说资源阅读平台的设计与实现 综合性小说电子书阅读管理平台的设计与开发【附源码、数据库、万字文档】

【Python课程设计/毕业设计】基于 Python 爬虫的小说资源阅读平台的设计与实现 综合性小说电子书阅读管理平台的设计与开发【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/24 6:00:10 阅读更多 →
Python毕业设计-基于 Web 技术的在线小说阅读系统的设计与实现 基于 Python 的轻量化网络小说阅读管理系统的设计与实现(源码+LW+部署文档+全bao+远程调试+代码讲解等)

Python毕业设计-基于 Web 技术的在线小说阅读系统的设计与实现 基于 Python 的轻量化网络小说阅读管理系统的设计与实现(源码+LW+部署文档+全bao+远程调试+代码讲解等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/24 6:00:10 阅读更多 →
反激电源量产失效的五大工程根源与系统级对策

反激电源量产失效的五大工程根源与系统级对策

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 6:00:10 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/23 4:55:02 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/23 4:49:06 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/23 9:53:41 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/23 9:53:40 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/23 9:53:40 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/23 9:53:40 阅读更多 →