01 模板

模板演示

配置路径

在 application 中配置模板文件和静态文件的路径:

template_path='templates', static_path='static',

模板

<body> 欢迎{{ username }}登录 </body>

Handler

class TemplatesHandler(tornado.web.RequestHandler):

def get(self):

  self.write('templates')

  self.render('01in_out.html')

def post(self, *args, **kwargs):

user = self.get_argument('name', 'no')

self.render('02templates.html',

username=user

) #将参数传入模板文件.

在tornado中,模板就是一个html文件,但是模板通过模板语法,由tornado服务渲染之后,可以动态的往页面中填入数据

tornado自带模板语法,不需要再用其他的模板插件

模板概念

必须掌握:模板就是html文件,只是其中加入了模板语法,需要服务器的渲染,才能正常显示数据

02 模板符号

{{expression}}

用 {{ expression }} 中间是任何 python 表达式,或者是一个变量

示例:{{ 1 + 1 }}

{{ time.time() }} #在handler页面中要import time,并且要在handler中传入time参数.

{%  directives %}

其他的模板指令

示例

{% if 1 %}     this is if {% end %}

{#  … #}

在模板中要注释python表达式的运行,需要使用这个模板语法

示例

{# time.time() #}}

{{!   {%!   {#!

取消执行,如果不想执行内容,需要在页面上打印出模板符号,只需要加上感叹号( ! )即可

示例

{{! 1 + 1}}

{%! if 1 %} this is if {%! end %}

{#! time.time() #}}

在模板里定义一个变量要用set

{% set a = 0 %}

对变量的改变也要用set

{% set a += 1 %}

控制语句

if判断

在模板中可以使用 if 判断

注意:最后需要以 {% end %} 结尾

示例

{% if username != 'no' %}

欢迎{{ username }}登录 {% else %}

请登录

{% end %}

循环语句

for 循环

在 tornado 模板中可以使用 for 循环

注意:最后需要以 {% end %} 结尾

示例

{% for i in urllist %}

{{ i }}

{% end %}

while 循环

在 tornado 模板中可以使用 while 循环

注意:最后需要以 {% end %} 结尾

示例

{% set a = 0 %}

{% while a<5 %}

{{ a }}     {% set a += 1 %}

{% end %}

模板语法

{{

此符号中放入任意 python 表达式,或者模板中的变量

{%

此符号中放入模板中的命令,比如 if 、for 和 while 等

需要注意的是,使用 if 等命令是,需要加上 {% end %}

除此之外,异常处理 try 也可以在模板中使用,但是这样做会让模板变得像 python 模块一样,因此并不建议大家这么做

{#

模板中的注释语句,可以让模板中指令不执行

03 模板转义

参数

atga = "百度" #里面是百度的网址,这里显示的”百度“

模板

{{ atga }}

转义

页面并没有解析,只是当作一个字符串,直接在页面上打印出来

tornado默认是自动的转义,传入的数据都会当作字符串,不会被浏览器解析

模板去掉转义

局部去掉转义

{% raw atga %}

raw

raw 可以自模板中去掉转义,让 tornado 在渲染的时候不去转义变量

模板去掉转义

模板去转义/全局取消转义,相当于全部加raw

{% autoescape None %}

autoescape

在模板中添加上面代码之后,当前模板不再转义

escape

{{ escape(atga) }}

在开启模板不转义之后,可以使用 escape 来添加转义

全局去掉转义

在 Application 中添加如下配置:

autoescape=None,

autoescape

去掉整个项目的转义,配置之后,整个项目中的模板不再转义

<!-- -->前端注释的内容不显示但是还是会执行的.

04 静态文件引用

Application

static_path='static',

两种引入方式

路由配置

添加此配置之后,tornado就能自己找到静态文件

static/

自动查找

在 Tornado 模板中,static 是个关键词,能够自动替换成 static_path 后的内容

static_url

添加版本号

使用此方法时,Tornado 会自动地给静态文件添加版本号,第2次请求的时候,如果版本号更改了,浏览器会自动的缓存新的静态文件,

html里面的注释写法:

<!-- abc -->在浏览器不显示但是执行.

tornado框架基础04-模板基础的更多相关文章

  1. Tornado框架中视图模板Template的使用

    上文的程序中有这样一段: class MessageHandler(tornado.web.RequestHandler): def get(self): self.write(''' <htm ...

  2. SQL从入门到基础 - 04 SQLServer基础2(数据删除、数据检索、数据汇总、数据排序、通配符过滤、空值处理、多值匹配)

    一.数据删除 1. 删除表中全部数据:Delete from T_Person. 2. Delete 只是删除数据,表还在,和Drop Table(数据和表全部删除)不同. 3. Delete 也可以 ...

  3. tornado框架基础10-websocket

    websocket 01 长轮询 在网页,我们经常扫码登录,结合之前的学习的知识点,来思考下,前端是如何知道用户在手机上扫码登录了呢? 长轮询:客户端不断的向服务器发送请求 缺点: \1. 开销大 \ ...

  4. tornado框架基础05-模板继承、UImodul和UImethods

    01 模板继承 父模板​ <html lang="en"> <head>     <meta charset="UTF-8"> ...

  5. Python开发【第二十一篇】:Web框架之Django【基础】

    Python开发[第二十一篇]:Web框架之Django[基础]   猛击这里:http://www.cnblogs.com/wupeiqi/articles/5237704.html Python之 ...

  6. tornado框架&三层架构&MVC&MTV&模板语言&cookie&session

    web框架的本质其实就是socket服务端再加上业务逻辑处理, 比如像是Tornado这样的框架. 有一些框架则只包含业务逻辑处理, 例如Django, bottle, flask这些框架, 它们的使 ...

  7. Vue基础项目模板

    https://github.com/wanglong/vue-element-admin.git 优化 Vue CLI 3 构建的前端项目模板(1)- 基础项目模板介绍 一站式开源运维平台,分享给大 ...

  8. Django框架04 /模板相关、别名/反向解析/路由分发

    Django框架04 /模板相关.别名/反向解析/路由分发 目录 Django框架04 /模板相关.别名/反向解析/路由分发 1. 语法 2. 变量/万能的点 3 . 过滤器 4. 标签Tags 5. ...

  9. javaSE基础04

    javaSE基础04 一.三木运算符 <表达式1> ? <表达式2> : <表达式3> "?"运算符的含义是: 先求表达式1的值, 如果为真, ...

  10. javascript基础04

    javascript基础04 1.循环语句 1.While 语句: while (exp) { //statements; } var i = 1; while(i < 3){ alert(i) ...

随机推荐

  1. P1211 街道赛跑

    又是一下午的杠题,累啊~~~ 这道题第一问很简单,只需去掉一个点,判断能不能到达终点就行了: 第二问其实仔细想想也不难,就是判断去掉一个点后是否形成两个图:首先要知道是建立在第一问的基础上的:在加边的 ...

  2. 给Clouderamanager集群里安装可视化分析利器工具Hue步骤(图文详解)

    扩展博客 以下,是我在手动的CDH版本,安装Hue. CDH版本大数据集群下搭建Hue(hadoop-2.6.0-cdh5.5.4.gz + hue-3.9.0-cdh5.5.4.tar.gz)(博主 ...

  3. iOS UITextView自适应高度UITextContainerView抖动问题

    在打造一个类似于微信朋友圈评论输入框的时候,需要动态调整输入框的高度, 但是,在调整了UITextView的高度之后,继续输入会导致内容(UITextContainerView里的文字)抖动. scr ...

  4. Centos6.8 搭建Lvs+Keepalived

    Keepalived keepalived是一个类似于layer3, 4 & 7交换机制的软件,也就是我们平时说的第3层.第4层和第7层交换.Keepalived是自动完成,不需人工干涉. 简 ...

  5. 接口测试postman和Jmeter

    接口测试属于功能测试的范畴,一般来说分为两种,一种是程序内部的接口,一种是系统对外的接口. postman测试接口 1. get请求: (1) 直接在浏览器中输入接口地址+?+参数 (2)使用post ...

  6. [WOJ1138]最大子序和

    题目链接: WOJ1138 题目分析: 是很经典的一道题,乱搞的方法应该有不少,这里介绍O(n)的单调队列做法 首先维护一个前缀和,然后枚举每一个位置,维护一个前缀和单增的单调队列,但队列仅储存下标, ...

  7. 转 ORACLE数据库ORA-00392 log 4 of thread 1 is being cleared, operation not allowed错误

    现象: 数据库在做to-time recovery, 时候,restore and recover 都是正常的,但是最后一步open resetlogs 报错如下 ORA-00392 原因: 因为是在 ...

  8. 131 Palindrome Partitioning 分割回文串

    给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串.返回 s 所有可能的分割方案.例如,给出 s = "aab",返回[  ["aa"," ...

  9. webkit滤镜

    -webkit-filter: grayscale(1);/*灰度*/ -webkit-filter: sepia(1);/*褐色*/ -webkit-filter: saturate(1);/*饱和 ...

  10. 【译】建立属于你的个人高效系统——效率专家 Mike Vardy 教你如何设置一个简单的个人高效系统

    原文:http://mux.baidu.com/?p=5300 百度MUX 已经有太多的高效系统供人使用,而对于那些刚刚开始,想寻求更好方法完成他们任务,项目,目标的人来说,要做一个高效系统却是相当艰 ...