bottlepy template
bottle template usage
1 example
使用bottle模板,最简单的方法是使用template函数或view装饰器
1.1 template 函数
例子如下:
from bottle import template
template('filename', name="hello world") # filename 为文件名可以不包括后缀,默认后缀有:['tpl','html','thtml','stpl']
或
template('hello {{name}}', name="world") # 第一个参数也可以直接为字符串内容
# 或 定制其他参数
template('form.html', template_lookup=['./template/'], template_settings={'noescape':1}, data=json.dumps(data))
# 完整例子
from bottle import template, route
@route('/')
def index():
return template('index', name="world") # 返回 str(或python2 中的unicode)
### index.tpl
hello {{name}}
###
在bottle中可以使用的模板引擎有: MakoTemplate,CheetahTemplate,Jinja2Template,SimpleTemplate; 版本0.12.9中默认使用SimpleTemplate
可以在template中通过参数template_adapter来指定其他引擎, 也可以直接使用mako_template,cheetah_template,jinja2_template函数
默认查找路径 bottle.TEMPLATE_PATH 即 ['./', './views/'], 我们可以通过template_lookup参数来修改搜索路径
另外也可以通过参数template_settings来控制模板引擎渲染,比如在输出JSON数据时,不希望进行HTML ESCAPE, 则在SimpleTemplate中可以指定noescape为True
1.2 view 装饰器
# 和使用 template 一样
@view('hello_template')
def hello(name='World'):
return dict(name=name)
2.2 SimpleTemplate 引擎语法
变量和函数调用
% name = "Bob" # a line of python code
<p>Some plain text in between</p>
<%
# A block of python code
name = name.title().strip()
%>
<p>More plain text</p>
循环
<ul>
% for item in basket:
<li>{{item}}</li>
% end
</ul>
条件控制
<div>
% if True:
<span>content</span>
% end
</div>
默认模板语法使用语法符号为 <% %> % {{ }},为了不与angularjs或underscore等前端模板冲突, 我们可以修改模板语法 如 <{% %}> %% {%{ }%}
语法由空白字符分割,共5部分组成: block_start block_close line_start inline_start inline_end
template('filename', template_settings={'syntax': '<{% %}> %% {%{ }%}'})
参考官方文档
- template: templates function
- SimpleTemplate: simpletemplate syntax
- examples: template page example
bottlepy template的更多相关文章
- 为.NET Core项目定义Item Template
作为这个星球上最强大的IDE,Visual Studio不仅仅提供了很多原生的特性,更重要的是它是一个可定制的IDE,比如自定义Project Template和Item Template就是一个非常 ...
- jQuery.template.js 简单使用
之前看了一篇文章<我们为什么要尝试前后端分离>,深有同感,并有了下面的评论: 我最近也和前端同事在讨论这个问题,比如有时候前端写好页面给后端了,然后后端把这些页面拆分成很多的 views, ...
- 2000条你应知的WPF小姿势 基础篇<69-73 WPF Freeze机制和Template>
在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师.最为出色的是他维护了两个博客:2,000ThingsYou Should Know About C# 和 2,00 ...
- tornado template
若果使用Tornado进行web开发可能会用到模板功能,页面继承,嵌套... 多页应用模板的处理多半依赖后端(SPA就可以动态加载局部视图),就算是RESTfull的API设计,也不妨碍同时提供部分模 ...
- 设计模式(九): 从醋溜土豆丝和清炒苦瓜中来学习"模板方法模式"(Template Method Pattern)
今天是五.四青年节,祝大家节日快乐.看着今天这标题就有食欲,夏天到了,醋溜土豆丝和清炒苦瓜适合夏天吃,好吃不上火.这两道菜大部分人都应该吃过,特别是醋溜土豆丝,作为“鲁菜”的代表作之一更是为大众所熟知 ...
- C++泛型编程:template模板
泛型编程就是以独立于任何特定类型的方式编写代码,而模板是C++泛型编程的基础. 所谓template,是针对“一个或多个尚未明确的类型”所编写的函数或类. 使用template时,可以显示的或隐示的将 ...
- 新手入门Underscore.js 中文(template)
Underscore.js是一个很精干的库,压缩后只有4KB.它提供了几十种函数式编程的方法,弥补了标准库的不足,大大方便了javaScript的编程.MVC框架Backbone.js就将这个库作为自 ...
- knockoutjs如何动态加载外部的file作为component中的template数据源
玩过knockoutjs的都知道,有一个强大的功能叫做component,而这个component有个牛逼的地方就是拥有自己的viewmodel和template, 比如下面这样: ko.compon ...
- JavaScript模板引擎artTemplate.js——template.helper()方法
上一篇文章我们已经讲到了helper()方法,但是上面的例子只是一个参数的写法,如果是多个参数,写法就另有区别了. <div id="user_info"></d ...
随机推荐
- input 边框颜色
border 的属性 有三个 border:5px solid red; 如果上述值缺少一个没有关系,例如border:#FF0000;是允许的. 分别对应:border-width, border- ...
- 如何用SQL语句实现Mysql数据库的备份与还原
以前一直做android客户端的项目,根本没有开发asp.net mvc的开发,现阶段做了一个模块,参数设置,以及数据库的备份与还原.其需求如下: 参数设置 本项参数设置为对自动数据备份进行设置,管理 ...
- DELPHI类声明方式简介
TMyDemo = class(TObject) FName: string; {数据成员(Field)} FAge: Integer; private {私有的} {最为隐秘的访问程度} proce ...
- 用c#中的WebBrowser抢小米F码,抢小米手机以及自动测试实现原理
首先是用c#中的WebBrowser控件打开登录网页,很简单,拖拽WebBrowser到Form上,然后给它的Url属性赋值.WebBrowser就会自动navigate to 这个网页. WebBr ...
- js前台加密,java后台解密实现
参考资料: JS前台加密,java后台解密实现
- 1.13 linux笔记
free -m 看内存脚本 rpm -ivh 显示过程 rpm -U --upgraderpm -F --freshenrpm -e --eraserpm -e koren find / -name ...
- GC 源码分析
java对象的内存分配入口 Hotspot 源码解析(9) •内存代管理器TenuredGeneration对垃圾对象的回收2015-01-18阅读1154 •内存代管理器DefNewGenerati ...
- undefined reference to `dlopen'
g++ -O0 -g3 -I. -Ithird/json -Ithird/core/include -Ithird/vite/include -Ithird/openfst-1.2.10/src/in ...
- Eclipse中将Java项目转换成Web项目的方法
前言: 用Eclipse开发项目的时候,把一个Web项目导入到Eclipse里会变成了一个java工程,将无法在Tomcat中进行部署运行. 方法: 1.找到.project文件,找到里面的<n ...
- mysql操作记录
use mysql;select host,user,password from user; grant all privileges on *.* to root@'%' identified by ...