tornado模板的自动编码问题(autoescape )
tornado新版(具体版本未知)支持自动转义,比如{{ "<div>" }}不会输出html标签,而是进行转义。
{{ module.test(10) }} 也会进行转义。往往module的调用是输出html的,转义之后就没法使用了。
解决方法有2种:
1. 通过{% autoescape None %}关掉自动转义,但是此命令的作用于是整个文件,要么全自动转义,要么全都不转义
2. 使用{% module %}命令输出原始html.
``{% module *expr* %}``
Renders a `~tornado.web.UIModule`. The output of the ``UIModule`` isnot escaped::{% module Template("foo.html", arg=42) %}
使用场景:
如果一个文件中多数需要转义,则打开{% autoescape xhtml_escape %},遇到不需要转义的则通过{% module *expr* %}处理
如果一个文件多数不需要转义,则{% autoescape None %},遇到需要转义的使用{{ escape(xxx) }}处理
update:
{% module *expr* %} 这种方法可以直接调用module类,返回不会被转义。
如果直接输出html,可以使用raw的方式,比如 {% raw "<div>xxx</div>""" %},对<div>不会进行转义处理
tornado模板的自动编码问题(autoescape )的更多相关文章
- Tornado模板
--------------------静态文件-------------------- 1.static_path:通过向web.Application类的构造函数传递一个名为static_path ...
- Tornado 模板(StaticFileHandler/static_path/template_path等) 笔记
使用StaticFileHandler进行首页默认访问页面,最好将StaticFileHandler放在最后面,这样不会覆盖要匹配自定义的路径 import tornado.web import to ...
- Tornado模板配置
#!/usr/bin/env python # -*- coding:utf-8 -*- #tornado模板配置 import tornado.ioloop import tornado.web c ...
- Tornado 模板支持“控制语句”和“表达语句”的表现形式
Tornado 的模板支持“控制语句”和“表达语句”,控制语句是使用 {% 和 %} 包起来的 例如 {% if len(items) > 2 %}.表达语句是使用 {{ 和 }} 包起来的,例 ...
- tornado 模板引擎
在tornado的模板引擎中,有两种方式,UImethod与UImodule 自定义方法 在模板中调用方法: tornado:与Django一样使用{{}},但是对于for循环之类,Django以{% ...
- Tornado模板转义处理
转自:http://www.qttc.net/201305320.html tornado默认是转义所有字符,比较安全,但有时候我们的确需要把字符当做html来解析处理,因此我们需要做些处理. 示例: ...
- tornado模板的使用
一. 配置模板路径 settings中使用template_path来指定模板的路径, 实例化服务对象时加载进去即可. 二. 模板的使用 1. 使用self.render()方法可返回指定的html页 ...
- tornado 学习笔记9 Tornado web 框架---模板(template)功能分析
Tornado模板系统是将模板编译成Python代码. 最基本的使用方式: t = template.Template("<html>{{ myv ...
- tornado 学习笔记10 Web应用中模板(Template)的工作流程分析
第8,9节中,我们分析Tornado模板系统的语法.使用以及源代码中涉及到的相关类,而且对相关的源代码进行了分析.那么,在一个真正的Web应用程序中,模板到底是怎样使用?怎样被渲染? ...
随机推荐
- 微信开发-Jssdk调用分享实例
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.IO ...
- [编程题] 最大的LeftMax与rightMax之差绝对值
[编程题] 最大的LeftMax与rightMax之差绝对值 给定一个长度为N的整型数组arr,可以划分成左右两个部分: 左部分arr[0..K],右部分arr[K+1..arr.length-1], ...
- trangle
#include<iostream> #include<algorithm> using namespace std; int main() { int a,b,c; whil ...
- Java学习之String对象为什么是不可变的
转自:http://www.2cto.com/kf/201401/272974.html,感谢作者的总结 什么是不可变对象? 众所周知, 在Java中, String类是不可变的.那么到底什么是不可变 ...
- c++读取文件内容并保存到二维数组
每行数据最后需要Tab处理 #include <iostream> #include <fstream> #include <string> using names ...
- 【LeetCode题意分析&解答】34. Search for a Range
Given a sorted array of integers, find the starting and ending position of a given target value. You ...
- Tensorflow的CNN教程解析
之前的博客我们已经对RNN模型有了个粗略的了解.作为一个时序性模型,RNN的强大不需要我在这里重复了.今天,让我们来看看除了RNN外另一个特殊的,同时也是广为人知的强大的神经网络模型,即CNN模型.今 ...
- perspective结合transform的3D效果
http://css-tricks.com/almanac/properties/p/perspective/ 链接中讲了 perspective的两种用法及比较: 1.perspective:100 ...
- lambda表达式和闭包
lambda表达式和闭包 熟悉的Javascript或者Ruby的同学,可能对另一个名词:闭包更加熟悉.因为一般闭包的示例代码,长得跟lambda差不多,导致我也在以前很长一段时间对这两个概念傻傻分不 ...
- python总结
环境:django,numpy,matplotlib, 解释语言:开发效率高,通用性强,内置方便的数据容器,易于扩展和嵌入. 语言:lua--嵌入式/网络/APP,erlang--嵌入式,python ...