tornado-模板,转义,上传静态文件
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.render("ces.html") def post(self, *args, **kwargs):
user = self.get_argument("name")
urllist = [
("https://www.shiguangkey.com","时光"),
("https://www.baidu.com","百度")
]
atga = '<a href="https://www.shiguangkey.com">时光钥匙</a>'
self.render("4.1-ces.html",
username =user,
urllist = urllist,
atga = atga,
) application = tornado.web.Application(
handlers=[ # 列表按顺序匹配
(r"/", MainHandler),
],
template_path='templates', # 表明页面html的路径
static_path='static',
debug=True, # 上传代码后服务器自动重启
autoescape=None,
)
模板代码
<!DOCTYPE html>
{#% autoescape None %#}
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
* {
margin: 0;
padding: 0;
}
</style>
</head>
<body>
欢迎 {{username}}登录
<br> {% if username!='no' %}
欢迎 {{username}}登录
<img src="static/images/1.png" alt="" style="width: 200px;height:200px">
<img src="{{static_url('images/2.jpg')}}" alt="" style="width: 200px;height:200px">
{% else %}
what is your name?
{% end %}
<br>
{% for i in urllist %}
<a href="{{i[0]}}" target="_blank">{{i[1]}}</a>
{% end%}
<br>
{% set a = 0 %}{% while a<5 %} {{a}}a{% set a += 1 %}{% end %}
<br>
{{ escape(atga) }}
<br>
{% raw atga %}
{{ atga }} </body>
</html>
知识点:
模版 tornado自带模板
# html文件 通过tornado服务渲染,可以往动态的网页传入数据 # {{ python表达式,变量 }}
# {% if a=0%} haha {%end %}
# {% for i in urllist %}a href="{{i[0]}}" target="_blank">{{i[1]}}</a>{% end %}
# {% set a = 0 %}{% while a<5 %} haha{% set a += 1 %}{% end %}
# {# 注释模板 #}
# {{!a=1}} 模板加上!直接将代码转义出来 # {% apply upper %} hello world {% end %} def upper(a): return a.upper() 将所有的字符串都在upper执行一边
# {% raw linkify('百度链接:https://www.baidu.com') %} 将内容变成a链接
取消转义:
# tornado给模板传入字符串,都会转译成html编码
# 变量atga = <a href="https://www.shiguangkey.com">时光钥匙</a>
# 超链接标签传给模板{{ atga }}转译成
# <a href="https://www.shiguangkey.com">时光钥匙</a>
# 在解析到浏览器就变成 <a href="https://www.shiguangkey.com">时光钥匙</a>
# 不能成为链接
# 取消转移
# 模板内 不影响其他模板
# {% atga %} --模板局部取消转义
# <!DOCTYPE html>{% autoescape None %} --全模块
# 防止被取消转移 escape(atga)
# 全局(整个项目,所有模块都不转义)
# application autoescape=None,
引用静态文件:
# 传入图片 如果显示失败 检查是否上传到虚拟环境,和是否在application中表明路径路径 static_path='static'
# <img src="static/images/1.png" alt="">
# *** 或者用函数 static_url 该方法更强大
# <img src="{{static_url('images/2.jpg')}}"> 该函数自动补全路径
tornado-模板,转义,上传静态文件的更多相关文章
- ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 try.dot.net 的正确使用姿势 .Net NPOI 根据excel模板导出excel、直接生成excel .Net NPOI 上传excel文件、提交后台获取excel里的数据
ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 ASP.NET Core 从2.2版本开始,采用了一个新的名为Endpoint的路由方案,与原来的方案在使用上差别不 ...
- tornado上传大文件以及多文件上传
tornado上传大文件问题解决方法 tornado默认上传限制为低于100M,但是由于需要上传大文件需求,网上很多说是用nginx,但我懒,同时不想在搞一个服务了. 解决方法: server = H ...
- Xcode svn import项目 上传.a文件(静态库)
在终端使用命令 touch 项目所在文件夹 svn import 项目文件夹 https://服务器地址 -m "iPad import" 这样就把项目上传到服务器上了!但是不能把 ...
- tornado+nginx上传视频文件
[http://arloz.me/tornado/2014/06/27/uploadvideotornado.html] [NGINX REFRER:Nginx upload module] 由于to ...
- Django——3 模板路径 模板变量 常用过滤器 静态文件的使用
Django 模板路径 模板变量 过滤器 静态文件的加载 模板的路径,有两种方法来使用 设置一个总的templates在大项目外面,然后在sittings的TEMPLATES中声明 在每一个APP中创 ...
- extjs插件开发上传下载文件简单案例
前台,extjs,框架,mybatis,spring,springMVC,简单的文件上传下载案例. 必要的jar包,commons-fileupload-1.3.1.jar,commons-io-2. ...
- .NET两种常见上传下载文件方法
1.FTP模式 代码如下: (1)浏览 /// <summary> /// 浏览文件 /// </summary> /// <param name="tbCon ...
- SpringMVC文件上传 Excle文件 Poi解析 验证 去重 并批量导入 MYSQL数据库
SpringMVC文件上传 Excle文件 Poi解析并批量导入 MYSQL数据库 /** * 业务需求说明: * 1 批量导入成员 并且 自主创建账号 * 2 校验数据格式 且 重复导入提示 已被 ...
- php实现下载模板与上传模板解析
<? //下载模板的请求 if(isset($_GET['action']) && $_GET['action'] =='down_group_excel'){ $code = ...
随机推荐
- opencv实现遍历文件夹下所有文件
前言 最近需要将视频数据集中的每个视频进行分割,分割成等长的视频片段,前提是需要首先遍历数据集文件夹中的所有视频. 实现 1.了解opencv中的Directory类: 2.实现测试代码: 系统环境 ...
- 8个iPhone防盗秘籍 为手机和资料安全保驾护航
最近发现用x手机的朋友越来越多,今天一个朋友手机被偷,万分焦急,失财事小,电话里很多手机号码等重要信息都无法找回.为了让大家尽量安全使用自己的iPhone或苹果产品,哪怕丢失后也有最大的可能性找回,特 ...
- 20155201 2016-2017-2 《Java程序设计》第七周学习总结
20155201 2016-2017-2 <Java程序设计>第七周学习总结 教材学习内容总结 第十二章 Lambda Lamdba表达式 例如 Comparator<String& ...
- zookeeper 官方文档——综述
Zookeeper: 一个分布式应用的分布式协调服务 zookeeper 是一个分布式的,开源的协调服务框架,服务于分布式应用程序. 它暴露了一系列基础操作服务,因此,分布式应用能够基于这 ...
- test20180830
所有试题限制均为128MB,1Sec 总分100(•́へ•́╬). 试题一 A题 问题描述: Bob 有 n 个士兵,他们排成一列按照从左到右编号为 1 到 n,每个士兵都有自己的 IQ 值,Bob ...
- js 每隔四位加一个空格
var str = '2016060520103600466'; var str=str.replace(/\s/g,'').replace(/(.{4})/g,"$1 "); a ...
- MySQL--查询表统计信息
============================================================= 可以用show table status 来查看表的信息,如:show ta ...
- 用 c 写 CGI 程序简要指南
文章摘要: CGI规定了Web服务器调用其他可执行程序(CGI程 序)的接口协议标准.Web服务器通过调用CGI程序实现和Web浏览器的交互.CGI程序可以用任何程序设计语言编写,如Shell脚本语 ...
- 常见MQ流行度比较
MQ的流行度跟它的特性和应用场景密切相关,站在当下来看,kafka最火,rabbitmq用的也很多,ActiveMQ作为经典mq选择用它入门的也不少.
- 【转】每天一个linux命令(45):free 命令
原文网址:http://www.cnblogs.com/peida/archive/2012/12/25/2831814.html free命令可以显示Linux系统中空闲的.已用的物理内存及swap ...