tornado学习笔记day05-访问数据库

模板## 配置模板路径

这个在之前我们已经配置好了,可以参考前面的文章

settings = {# 就像upfile就没有,你写了也白扯'template_path': os.path.join(BASE_DIR, "templates"),
}

渲染并返回给客户端

使用render()方法

class HomeIndexHandler(RequestHandler):def get(self):self.render("home.html")

变量与表达式

语法

  • { { var } }
  • { { expression } }

实例

class HomeIndexHandler(RequestHandler):def get(self):temp = 100# 直接传一个变量就行self.render("home.html",num = temp)# self.render("home.html")
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>主页</title>
</head>
<body><h1>这里是主页</h1>{ { num } }<br><!-- 这里支持加减  -->{ { num + 1 } }{ { num + 18 } }<!-- 这里需要用模板的注释才能真正的注释掉双大括号 --><!-- 这里一定要注意,这个普通的注释会被加载到页面中 -->{# num: { { num } } #}<!-- 模板的注释才是真正的注释 -->{# num: { { num + 10 } } #}<!-- 等号的赋值的不好使的,会报错  -->{# num: { { num = 5} } #}
</body>
</html>

流程控制

if

格式

单个的if

{ % if表达式 % }
语句
{ % end % }

if和else的

{ % if表达式 % }
语句1
{ % else % }
语句2
{ % end % }

多个if 的

{ % if表达式1 % }
语句1
{ % elif 表达式2% }
语句2
{ % elif 表达式3% }
语句3
<!--这里面else可有可无-->
{ % end % }

实例

{ % if flag == 0% }
flag确实是0
{ % elif flag == 0 % 
语句2
{ % elif flag == 2 % }
flag bug
{ % else % }
baiche
{ % end % }

for

这里面需要注意的是,结束模板语法都是{ % end % }

{ % for 变量 in 集合 % }
语句
{ % end % }

实例:

<ul>{ % for stu in stus % }<li>{ { stu } }</li>{ % end % }
</ul>

while

这个while很少使用,就不写了

函数

static_url()

作用

  • 获取配置中的静态目录的路径
  • 将参数拼接到静态目录后面并返回新的路径

示例

<link rel="stylesheet" href="{ { static_url('css/home.css') } }">

优点

  • 修改目录的话 只需要修改配置文件中的内容即可,不需要修改各种页面中的URL
  • Hash值
    • static_url创建了基于文件内容的Hash值
    • 将其添加到文件的末尾(当一个查询参数)
    • 这个hash值总能够保证,我们每一次加载最新的版本
    • 而不是之前的缓存的版本
    • 不论是开发阶段还是线上阶段,都是很有必要的

转义

tornado默认开启自动转义功能,能够防止网站攻击

class TranHandler(RequestHandler):def get(self):str = "<h1>能不能转义就看这会的了</h1>"self.render("trans.html",str = str)
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>转义</title>
</head>
<body>
{ {str} }
</body>
</html>

页面这样显示

<h1>能不能转义就看这会的了</h1>

关闭自动转义

  • raw:{ % raw str % }这个会关闭一行
  • 在页面模板中修改
    • autoescape:{ % autoescape None % }
    • 这个不管你三七二十一都关闭了就
  • 在配置文件中修改
    • autoescape : None
    • 当为None时关闭当前项目的自动转义
  • escape()函数
    • 这个函数能够在全局转义的条件下再不转义
    • { { escape(str) } }

继承

静态文件

  • static_path

    • 作用
      • 告诉tornado从文件系统中某一个特定的位置提供我们的静态文件
    • 示例:'static_path': os.path.join(BASE_DIR, "static"),
    • 请求方式:http://127.0.0.1:8080/static/html/index.html
    • 引用其他文件:
    <link rel="stylesheet" href="{ {static_url('css/index.css')} }">
    <script src="{ {static_url('js/jquery.js')} }"></script>
    
  • StaticFileHandler

    • 使用原因:这种请求方式:http://127.0.0.1:8080/static/html/index.html对于用户来说,体验不佳

    • 本质: 是tornado预制的用来提供静态资源文件的Handler

    • 作用: 可以通过StaticFileHandler来映射静态资源文件

    • 使用:

      • 第一种写法
      (r"/(.*)$", tornado.web.StaticFileHandler,{"path":os.path.join(BASE_DIR,"static/html"),}),
      
      • 第二种:
      (r"/(.*)$",tornado.web.StaticFileHandler,{"path": os.path.join(BASE_DIR, "static/html"),"default_filename": "index.html"}
      ),
      
    • 参数:

      • path:用来指定访问提供静态文件根路径
      • default_filename:用来指定访问路由中未指定文件名时,访问哪个静态中的文件
    • 注意:

      • 最好在其他路由的最下面写
      • 否则可能会不匹配
      • 其中的路由可以去参考一下百度的

数据库

概述

tornado目前没有自己的数据库,需要连接数据库,还得自己去适配
目前python3.6+tornado还没有完善的驱动

磁盘数据库和内存数据库:

比如你以前你的爸爸,那个手机啊,欠费了好几十还不给你停机
因为数据还没来得及处理,那个话费单,得一条一条处理,他处理不过来,知道么,当你欠费的时候,他还不知道你欠费呢
现在就不一样了,你的话单数据都在内存里面了,你一旦欠费,马上就给你停机,O(∩_∩)O哈哈~

redis的开源的内存数据库,移动联通都不用这种数据库
内存数据库是国内06年开始有人在搞
从13年开始,又出现了一个分布式内存数据库,现在人们都有钱了,数据量大了,一台服务器都存不下了
14年开始,又升级了一下,这次升级的是硬件,以前用的是万兆网卡,现在更NB了

链接

在应用启动时,创建一个数据库链接实例,供各个requestHandler使用

在requestHandler中,通过self.application来获取对象

相似文章

tornado学习笔记day01
tornado学习笔记day02
tornado学习笔记day03
tornado学习笔记day04
tornado学习笔记day05
tornado学习笔记day06
tornado学习笔记day07
tornado学习笔记day08

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/455236.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pythonelectron桌面开发案例_使用Electron开发基于Node.js的桌面应用

最近小编在查看分享资料时&#xff0c;发现一个可以开发跨平台桌面应用的框架——NW.js(原名&#xff1a;node-webkit)。正当小编兴致勃勃的研究NW.js的时候&#xff0c;最基础的安装环节出了问题。无论用npm还是cnpm都无法完整下载所依赖的包(具体原因待考察)。鉴于此&#xf…

x264_param_t结构体参数分析

参考网上的一些资料&#xff0c;结合个人的理解&#xff0c;对x264中x264_param_t结构体作了初步的分析&#xff0c;不保证正确。对x264熟悉的朋友可以在这基础上修改添加typedef struct x264_param_t{/* CPU 标志位 */unsigned int cpu;int i_threads; /* 并行编…

知识点总结

1、把一个类转换成一个xml&#xff0c;首先&#xff0c;类名前需要加特性&#xff0c;[DataContract(Namespace "http://CYSoft.Services/AuthorizationObject")]&#xff0c;[XmlRoot("Org")]&#xff0c;里边的名字为根节点的名字&#xff0c;对各个属性…

tornado学习笔记day06-应用安全

应用安全 cookie 普通cookie 一般我们的用户表中都有啥呢 你在购物的时候,加入购物车,让你登录,那你登录之后,他怎么知道你登录了呢 token 这个值是随机的,存在cookie里面 设置 原型: 设置cookie 的方法 def set_cookie(self,name: str,value: Union[str, bytes],domai…

托福试卷真题_干货解答考生疑惑,自考真题考过了还会在出吗?

重视真题&#xff01;重视真题&#xff01;重视真题&#xff01;重要的话要说三遍。想自考的你们一定要注意&#xff0c;对于历年真题&#xff0c;从来都是“备考必做”的态度。做自考真题&#xff0c;除了可以让自己尽快熟悉考试题型和考点外&#xff0c;还有什么好处呢&#…

x264 struct学习 1

x264_t 结构体维护着CODEC的诸多重要信息 其中成员frames是一个指示和控制帧编码过程的结构。其中current是已经准备就绪可以编码的帧&#xff0c;其类型已经确定&#xff1b;next是尚未确定类型的帧&#xff1b;unused用于回收不使用的frame结构体以备今后再次使用。 struct …

2016 ACM/ICPC Asia Regional Dalian Online

自己还是太菜&#xff0c;补题离不开题解。。。 但还是留个博客&#xff0c;万一以后忘了。。。 1001 Different Circle Permutation Polya定理&#xff0c;第一次遇见&#xff0c;学习了一下。不旋转的时候可以得到 f[i]f[i-1]f[i-2] 斐波那契数列&#xff0c;旋转后就可以通过…

tornado学习笔记day07-同步与异步

同步 概念 同步就是按部就班的依次执行我们的代码 进阶 但是有些情况我们有一些比较耗时的从操作,比如去别的地方拿点资源,去其他网站请求数据,去访问数据库,上传文件等等,所以这里面优点瑕疵,有小编一一道来 比如这样 本模块的功能:<同步异步demo># 这个就相等于一个…

关键字: on

关键字: on 数据库在通过连接两张或多张表来返回记录时&#xff0c;都会生成一张中间的临时表&#xff0c;然后再将这张临时表返回给用户。 在使用left jion时&#xff0c;on和where条件的区别如下&#xff1a; 1、 on条件是在生成临时表时使用的条件&#xff0c;它不管on中的条…

天融信安全接入客户端_天融信提示您警惕物联网设备Ripple20漏洞风险

近日&#xff0c;天融信阿尔法实验室在JSOF实验室发布的由Treck公司开发的TCP/IP软件库中获取到一系列0day漏洞。JSOF实验室发布的这批漏洞共计19个&#xff0c;被JSOF研究人员称为"Ripple20"。受此软件库影响的产品数量估计超过数亿&#xff0c;其中包括智能家居设备…

Service-Oriented Architecture,SOA(转)

http://blog.csdn.net/WOOSHN/article/details/8036910 介绍&#xff1a; IT体系结构已非常成熟&#xff0c;它是一种成功处理典型IT问题的方法。体系结构中一个受到很大重视且相对较新的分支是面向服务的体系结构(SOA)。SOA经常被吹捧为企业用于解决应用程序灵活性和高维护成本…

tornado学习笔记day08-tornado中的异步

概述 应为epoll主要用来解决网络的并发问题,所以tornado中的异步也是主要体现在网络的IO异步上,即异步web请求 tornado.httpclient.AsyncHTTPClient tornado提供异步web请求客户端,可以用来进行异步web请求, 这个客户端和服务端是相对来说的,当tornado的Handler去其他位置去…

GreenSock (TweenMax) 动画案例(二)

实现效果 动画分解 1.灯光闪烁2.文字出现3.水流4.心电图 知识点 1.AI(可尽情骚扰UI欧巴)2.SVG(了解基本的知识点)3.TweenMax(GreenSock)4.CSS animation 写在前面 写过第一篇文章后GreenSock (TweenMax) 动画案例(一)再回头看发现代码太多&#xff0c;根本没耐心去看完。所以每…

vue 用key拿对象value_利用 WeakMap 对 Vue 新建数组中的对象赋予 :key

需求在 Vue 中&#xff0c;对组件进行循环都需要加入key以便“就地复用”&#xff0c;可是在某些情况下&#xff0c;我们需要新建多个对象&#xff0c;而这些对象不是从后端获取到的&#xff0c;而是前端生成的&#xff0c;没有唯一值&#xff0c;且 Vue 目前版本只允许字符串&…

无限轮播图片的实现原理

无限轮播图相信是很多开发人员常用的一个功能&#xff0c;这里总结一下常用的两种方式的实现原理 一、使用UIScrollview实现无限轮播用UIScrollView实现&#xff0c;在scrollView上添加3个UIImageView&#xff0c;分别用来显示上一张图片&#xff0c;当前显示的图片&#xff0c…

开启 JM 的 trace 功能

[JM代码] 开启 JM 的 trace 功能本帖最后由 firstime 于 2009-6-15 11:16 AM 编辑 城里汉子说过&#xff1a; trace文件对分析码流结构很有效。我说的是trace文件&#xff0c;不是一步一步跟踪&#xff0c;就是编解码同时生成的 trace_enc.txt 这个文件&#xff0c;里面对每个比…

kafka入门介绍(转载)

Kafka作为一个分布式的流平台&#xff0c;这到底意味着什么&#xff1f; 我们认为&#xff0c;一个流处理平台具有三个关键能力&#xff1a; 发布和订阅消息&#xff08;流&#xff09;&#xff0c;在这方面&#xff0c;它类似于一个消息队列或企业消息系统。 以容错的方式存储…

Cmd Markdown 编辑阅读器

欢迎使用 Cmd Markdown 编辑阅读器 我们理解您需要更便捷更高效的工具记录思想&#xff0c;整理笔记、知识&#xff0c;并将其中承载的价值传播给他人&#xff0c;Cmd Markdown 是我们给出的答案 —— 我们为记录思想和分享知识提供更专业的工具。 您可以使用 Cmd Markdown&…

关于在smarty中实现省市区三级联动

刚开始接触php&#xff0c;&#xff0c;其实对于一些比较深入的东西还不是很了解&#xff0c;就像是这次的省市区联动&#xff0c;都是用三张表为基础编码的&#xff0c;原谅我的无知&#xff0c;谢谢。 接下来就是编码部分了&#xff1a; <?php require(./smarty/Smarty.c…

Ubuntu GitLab CI Docker ASP.NET Core 2.0 自动化发布和部署(1)

相关博文&#xff1a; Ubuntu 简单安装和配置 GitLabUbuntu 简单安装 DockerUbuntu Docker 简单安装 GitLabUbuntu Docker 安装和配置 GitLab CI 持续集成服务器版本 Ubuntu 16.04 LTS。 经过上面四篇博文中的相关安装和配置&#xff0c;我们主要完成了两个容器的创建和运行&am…