首页 > 代码库 > 详解Bottle模板
详解Bottle模板
今天和大家分享一下自己在学习Bottle框架的过程中总结的关于模板的知识点,希望对大家有帮助。
Bottle 使用自带的小巧的模板。
你可以使用调用 template(template_name, **template_arguments) 并返回结果。
@route(’/hello/:name’)def hello(name):
return template(’hello_template’, username=name)
这样就会加载 hello_template.tpl,并提取 URL:name 到变量 username,返回请求。
hello_template.tpl 大致这样:
<h1>Hello {{username}}</h1><p>How are you?</p>
模板搜索路径
模板是根据 bottle.TEMPLATE_PATH 列表变量去搜索。
默认路径包含 [’./%s.tpl’, ’./views/%s.tpl’]。
模板缓存
模板在编译后在内存中缓存。
修改模板不会更新缓存,直到你清除缓存。
调用 bottle.TEMPLATES.clear()。
模板语法
模板语法是围绕 Python 很薄的一层。
主要目的就是确保正确的缩进块。
下面是一些模板语法的列子:
%...Python 代码开始。不必处理缩进问题。Bottle 会为你做这些。
%end 关闭一些语句 %if ...,%for ... 或者其他。关闭块是必须的。
{{...}} 打印出 Python 语句的结果。
%include template_name optional_arguments 包括其他模板。
每一行返回为文本。
Example:
%header = ’Test Template’
%items = [1,2,3,’fly’]
%include http_header title=header, use_js=[’jquery.js’, ’default.js’]
<h1>{{header.title()}}</h1>
<ul>
%for item in items:
<li>
%if isinstance(item, int):
Zahl: {{item}}
%else:
%try:
Other type: ({{type(item).__name__}}) {{repr(item)}}
%except:
Error: Item has no string representation.
%end try-block (yes, you may add comments here)
%end
</li>
%end
</ul>
%include http_footer
文章来自:segmentfault
详解Bottle模板