大妈说写网页用Template很好用,今天看QPython的查询公交项目,也用到template了。
搜索试运行一段代码:
from string import Template
def main():
str = "My name is $name, my age is $age"
map = {"name":"picklecai", "age":"34"}
temp = Template(str)
result = temp.substitute(map)
print result
if __name__ == '__main__':
main()
其中,起先犯的错误是:map赋值时name和age没有带引号,系统运行提示错误为:name变量未定义。
稍后发现这个template并不是bottle里的template。所以搞错了。
--
查看bottle里的template代码,是个函数:
def template(*args, **kwargs):
'''
Get a rendered template as a string iterator.
You can use a name, a filename or a template string as first parameter.
Template rendering arguments can be passed as dictionaries
or directly (as keyword arguments).
'''
说的第一个参数就是一个名字。
查询公交项目中的用法,最简单的是home:
def home():
return template(ROOT+'/index.html')
只有一个参数,发现这是定义网址的。
回看常量定义中的ROOT:ROOT = os.path.dirname(os.path.abspath(__file__))
detail中的用法:
def detail():
city = request.GET['city']
q = request.GET['keyword']
data = _get_json_content(API_URL+"&city="+city+"&q="+q)
return template(ROOT+'/detail.html', data=data)
第二个参数好像是设置页面内容。
所以使用template的几个函数,就是定义几个网页的。