瓶@view vs模板()

时间:2014-02-23 03:59:04

标签: python frameworks template-engine bottle

使用template()渲染视图:

@get('/start/<page:int>')
def start(page=1):
    return template('start', page=page)

使用view()装饰器的相同示例:

@get('/start/<page:int>')
@view('start')
def start(page=1):
    return dict(page=page)

除个人偏好外,两者之间是否存在差异?

2 个答案:

答案 0 :(得分:2)

好吧,我不是一个专业的开发人员,所以我可能会说一些与编码中最基本的好方法相悖的东西,但我觉得使用返回模板()更有用,因为我可以使用几个模板,而视图装饰器是不可能的。 E.G:

@get('/start/<page:int>')
def start(page=1):
    return template('header',username=username)+template('start', page=page)+template('foot')

当然可以使用模板中的@views和%include子模板来完成此操作,也可能在其他一百万种方式中执行此操作,但是......这是一个区别!

...或者是否可以在一个@view中调用多个模板?

答案 1 :(得分:1)

我的理解是:不,除了偏好之外没有区别。 (与编写插件或使用路径装饰器完成许多相同任务的方式相同。)它们是实现相同目标的等效方法:渲染模板。

The Bottle template docs支持此:

  

要渲染模板,您可以使用template()函数或view()装饰器。

     

...

     

view()装饰器允许您返回带有模板变量的字典,而不是调用template()。