bottle 使用内嵌模板的rebase 功能

bottle 使用内嵌模板的使用也容易上手,在官方文档上关于 bottle 使用内嵌模板的rebase 功能示例如下

bottle 模板rebase

html 代码: Page code

1
2
% rebase('base.tpl', title='Page Title')
Page Content ...{{title}}

html 代码: base.tpl

1
2
3
4
5
6
7
8
<html>
<head>
  <title>{{title or 'No title'}}</title>
</head>
<body>
  {{base}}
</body>
</html>

python 代码: views code

1
2
3
4
@route('/')
@route('/hello/')
def hello(name='World'):
    return template('page.html', title=name)

这样使用会出现下面的错误:

1
2
3
4
plain code: 500 Internal Server Error
globals()['_rebase']=(u"title='Page", dict(Title')))
                                                       ^
SyntaxError: EOL while scanning string literal

遇到这个问题可以使用下面的办法来解决:

html 代码: layout.tpl

1
2
3
4
5
6
7
8
<html>
<head>
  <title>{{title or 'No title'}}</title>
</head>
<body>
  %include
</body>
</html>

文本文件: content.tpl

1
2
This is the page content: {{content}}
%rebase layout title='Content Title'

plain 代码: content.tpl rebase 也可以放在上面

1
2
%rebase layout title='Content Title'
This is the page content: {{content}}

python 代码: render content.tpl

1
print template('content', content='Hello World!')

bottle 内嵌的模版功能也比较灵活,一般使用也足够。如果要更强大的模版功能,就要使用第三方的模版了,如最快的Python 模版 pyTenjin 等。

本文网址: https://pylist.com/topic/31.html 转摘请注明来源

Suggested Topics

Leave a Comment