tornado 模版语法

取消转义 :

  取消项目转义 :autoescape = None

  取消模版转义:{% autoescape None %}

  取消行转义   :{% raw bd %}

强制转义(行)   :{{escape(bd)}}

循环语句              :if while for
静态文件    :static

  lesson4.py

 # -*- coding:utf-8 -*-

 import tornado.web
import tornado.httpserver
import tornado.options
import tornado.ioloop
import time from tornado.options import define,options define('port', default=8080, help='run port', type=int)
define('version', default='0.0.1', help='version 0.0.1', type=str) class MainHandler(tornado.web.RequestHandler): def get(self, *args, **kwargs):
self.render('template.html') def post(self, *args, **kwargs):
user = self.get_argument('user','none')
psd = self.get_argument('password','none')
bd = '<a href="https://www.baidu.com" target="_blank">百度</a>'
self.render('template02.html',
user = user,
psd = psd,
time = time,
bd = bd,
) class NotFoundHandler(tornado.web.RequestHandler): def get(self, *args, **kwargs):
self.send_error(404) def write_error(self, status_code, **kwargs):
self.render('error.html') application = tornado.web.Application(
handlers = [
(r"/",MainHandler),
(r"/post",MainHandler),
(r"/(.*)", NotFoundHandler),
],
template_path = 'template',
static_path='static',
# autoescape = None, # 整个项目不转义 尽量不要用
debug = True
) if __name__ == '__main__':
print(options.port)
print(options.version)
tornado.options.parse_command_line()
http_server = tornado.httpserver.HTTPServer(application)
http_server.listen(options.port)
tornado.ioloop.IOLoop.instance().start()

template.html

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>template_lesson4</title>
<style>
div{
margin: 30px
}
</style>
</head>
<body>
<div>
hello world !
<form method="post" action="/post" target="_blank"> <p>用户名<br><input type="text" name="user"></p> <p>密码<br><input type="password" name="password"></p> <input type="submit"> </form>
</div>
</body>
</html>

  template2.html   ----> 本文重点

 <!DOCTYPE html>
{# autoescape None #} <!--仅在此模版去除转义 尽量不要用-->
<html lang="en">
<head>
<meta charset="UTF-8">
<title>template02_lesson4</title>
<style>
div{
margin: 30px
}
a{
text-decoration:none;
}
</style>
</head>
<body>
<div>
登录成功 ! <br>
用户名:{{user}} &nbsp;&nbsp; 密码:{{psd}} <br> {% for i in range(1,9) %} <!--百分号表示执行python语句-->
{% set i = i*3 + 1 %}
i = {{i}} &nbsp;
{% end %} <!--这里必须有 end -->
<br> {% set a = 1 %}
{% while a < 5 %}
{% set a += a*2 %}
a = {{a}} &nbsp;
{% end %} <!--这里必须有 end -->
<br> {% set b = 1 %}
{% if b < 5 %}
{% set b += 1 %}
b = {{b}} &nbsp;
{% end %} <!--这里必须有 end -->
<br> 时间戳1 :{{ time.time() }}
<br> 时间戳2 :{# time.time() #} <!--井号表示注释掉了不执行 不显示-->
<br>
时间戳3 :{{! time.time() }} <!--感叹号表示不转义 感叹号前面无空格-->
<br>
百度链接1: <a href="https://www.baidu.com" target="_blank">百度</a> <br> 百度链接2: {{bd}} <br> <!--花括号里的链接不会被Html解析--> 百度链接3: {% raw bd %} <br> <!--raw 此行取消转义, html 会解析--> 百度链接4: {{escape(bd)}} <br> <!--escape 此行强制转义, 不会被Html解析-->
</div>
<div>
{% set i = 0 %}
{% if i < 1 %}
<img src="static/imgs/01.jpg" width="300px" height="200px"> <!--静态文件的两种添加方式-->
<img src="{{ static_url('imgs/02.jpg') }}" width="300px" height="200px"> <!--静态文件的两种添加方式-->
{% end %}
<br>
</div> </body>
</html>

tornado 模版的更多相关文章

  1. tornado 模版继承 函数和类的调用

    模版继承.函数和类的调用 目录结构 lesson5.py # -*- coding:utf-8 -*- import tornado.web import tornado.httpserver imp ...

  2. Tornado详解

    1.Tornado路由系统 1.1 Tornado程序示例 新建一个tornadodemo.py, import tornado.ioloop import tornado.web user_info ...

  3. tornado中使用Mako模版

    tornado是一个优秀的python的开源web 框架,框架本身的性能确实很好,但是他自带的模版只能说是一般般.关于tornado的详细信息可以直接到管网参考. http://www.tornado ...

  4. tornado中通用模版

    第一: 1.Pycharm新建python项目(不是django项目),在项目下面直接新建server.py,内容如下: 2.安装tornado, pip install tornado import ...

  5. tornado-模版reverse_url

    from tornado.web import url handler=[ url(r"/hello", grab_handler.HelloHandler, name='hell ...

  6. Python框架之Tornado(三)请求

    概述 本篇就来详细介绍tornado服务器(socket服务端)是如何接收用户请求数据以及如果根据用户请求的URL处理并返回数据,也就是上图的3 系列所有步骤,如上图[start]是一个死循环,其中利 ...

  7. Python框架之Tornado(二)请求阶段

    概述 上图是tornado程序启动以及接收到客户端请求后的整个过程,对于整个过程可以分为两大部分: 启动程序阶段,又称为待请求阶段(上图1.2所有系列和3.0) 接收并处理客户端请求阶段(上图3系列) ...

  8. 第三篇:白话tornado源码之请求来了

    上一篇<白话tornado源码之待请求阶段>中介绍了tornado框架在客户端请求之前所做的准备(下图1.2部分),本质上就是创建了一个socket服务端,并进行了IP和端口的绑定,但是未 ...

  9. 第二篇:白话tornado源码之待请求阶段

    上篇<白话tornado源码之一个脚本引发的血案>用上帝视角多整个框架做了一个概述,同时也看清了web框架的的本质,下面我们从tornado程序的起始来分析其源码. 概述 上图是torna ...

随机推荐

  1. [LOJ #6433]「PKUSC2018」最大前缀和

    题目大意:给你一个$n(n\leqslant20)$项的数列$A$,设重排后的数列为$A'$,令$pre_p=\sum\limits_{i=1}^pA'_i$,求$max\{pre_i\}$的期望,乘 ...

  2. 【Codeforces Round #406 (Div. 2)】题解

    The Monster 签到题,算一下b+=a和d+=c,然后卡一下次数就可以了. Not Afraid 只要一组出现一对相反数就是安全的. Berzerk 题意:[1,n],两个人轮流走,谁能走到1 ...

  3. [USACO16OPEN]钻石收藏家Diamond Collector

    由于相差不超过k才可以放在一起,要判断不超过k这个条件,显然我们需要排序 首先我们需要一个f数组,f[i]意义看代码开头注释, 假设我们可以选择的某一个区间是a[l]~a[r](已排序且最优(最长的意 ...

  4. Linux(ubuntu 12.04桌面版) 搭建Android开发环境

    因为一些工作上的原因,需要切换到Linux环境下做点开发,我选择的Linux发行版本为ubuntu(我不建议使用fedora,我最开始就是使用的fedora,但发现并不是特别好使,有些插件没办法安装, ...

  5. POJ3415:Common Substrings——题解

    http://poj.org/problem?id=3415 给定两个字符串A 和B,求长度不小于k 的公共子串的个数(可以相同). 论文题,和上道题(POJ2774)类似,首先想到现将AB串合并,然 ...

  6. ContestHunter暑假欢乐赛 SRM 08

    rating再次跳水www A题贴HR题解!HR智商流选手太强啦!CYC也好强%%%发现了len>10大概率是Y B题 dp+bit优化,据LLQ大爷说splay也可以优化,都好强啊.. C题跑 ...

  7. apache和IIS共享80端口解决办法

    第一步:把iis所发布的网站默认端口由80改为8080:第二步:修改apache的httpd.conf配置文件. 首先,要让apache支持转发也就是做iis的代理那么就要先启 用apache的代理模 ...

  8. dubbox小demo

    概述: 我们建立两个web项目,一个是service负责提供服务,另一个是web项目负责调用服务. 两个项目都是 maven Project 项目 生产者项目: 项目中主要就是: pom文件,引入相关 ...

  9. NYOJ 832 DP

    合并游戏 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 大家都知道Yougth除了热爱编程之外,他还有一个爱好就是喜欢玩. 某天在河边玩耍的时候,他发现了一种神奇的 ...

  10. ubuntu18.04server设置静态IP

    16.04以后的版本配置静态IP是类似这样的文件 /etc/netplan/50-cloud-init.yaml 1.查询网卡名称 2.修改配置文件/etc/netplan/50-cloud-init ...