模板语法类似于 Python 的语法。它要确保语句块的正确缩进,所以你在写模板的时候无需担心会出现

缩进问题。详细的语法描述可看 SimpleTemplate模板引擎 。

虽然 Python 是一门强大的语言,但它对空白敏感的语法令其很难作为一个模板语言。 SimpleTemplate

移除了一些限制,允许你写出干净的,有可读性的,可维护的模板,且保留了 Python 的强大功能。

在上章《python bottle 框架基础教程:模板使用 》例子中学习到了 {{...}} 语句的用法。只要在 {{...}} 中的 Python 语句返回一个字符串或有一个字符串的表达形式,它就是一个有效的语句。

嵌入 Pyhton 代码

一行以 % 开头,表明这一行是 Python 代码。它和真正的 Python 代码唯一的区别,在于你需要显式地在末尾添加 %end 语句,表明一个代码块结束。这样你就不必担心 Python 代码中的缩进问题,SimpleTemplate模板引擎的 parser 帮你处理了。不以 % 开头的行,被当作普通文本来渲染。只有在行首的 % 字符才有意义,可以使用 %% 来转义。

python后端代码示例:

[root@linuxyw bottle]# cat main.py
#/usr/bin/env python
#coding=utf-8
from bottle import route, run
from bottle import template,view
@route('/login')
def login():
return template('login')
@route('/info')
@view('info')
def info():
name = '戴儒锋'
age = '30'
blog = 'www.linuxyw.com'
qq = '63780668'
book = ['python','linux','php']
price = {'pc':4000,'phone':2000,'bike':600}
data = {'tname':name,'tage':age,'tblog':blog, 'tqq': qq,'tbook':book,'tprice':price,'tnum':''}
return data
run(host='0.0.0.0', port=8080, debug=True)   #开启服务

模板代码:

[root@linuxyw bottle]# cat views/info.tpl

会员中心


会员信息

如果tname后端有返回值(即非空值),就显示出来

%if tname:

姓名:{{tname}}

%end

也可以用if else语句

%if tnum:

tnum:{{tnum}}

%else:

tunm没有定义

%end

也可以用if xx == 'yy'语句

%if tage == '30':

哈哈,你老了!

%else:

你年轻吗?

%end

如果tnum没有定义那就用默认值666::{{get('tnum','666')}}

所有的书名用for循环遍历:

%for col in tbook:

{{col}}

%end

浏览器访问后显示(http://ip+8080/info):

python模版设置 python模板语言_linux

bottle模板效果

总结:

模板上的语法,有点类似于python中的语法,注意用%开头,end结尾,当用end结尾时,不需要加冒号

%if tname,用这个语法时,首先需要python后端有定义这个tname变量,即在return时,要有定义,要不然就会出错;如果return没定义的变量,则需要用{{get('tnum','666')}}这种方式,这个语法是如果检测到一个没有定义的变量时,就直接定义这个变量,并赋值666给它,避免模板语法出错;%for循环用起来和python类似了。

更多的语法,可以查看bottle官网文档或其它教程