尽管处于调试模式,但仍可以使用Bottle.py缓存模板

时间:2012-01-31 02:27:00

标签: python google-app-engine templates caching bottle

我刚刚在GAE上构建了我的第一个Bottle.py应用。它的工作原理是,当我更改模板时,我必须重新启动开发服务器以查看更改。文档说,模板缓存应该在bottle.debug(True)时被禁用,并且你也可以调用bottle.TEMPLTE.clear(),但这些都不起作用。我也试过设置run(reloader = True),但这会导致错误。我究竟做错了什么? bottle.debug()是否适用于GAE上的任何其他人?

import bottle
bottle.debug(True)
bottle.TEMPLATES.clear()

@bottle.route('/')
def index(name='World'):
    return bottle.template('main')

bottle.run(server='gae')

更新 我没有使用bottle.run(server ='gae'),而是自己包含了标准的main()函数,现在它可以工作了。

def main():
  app = bottle.default_app()
  util.run_wsgi_app(app)

if __name__ == "__main__":
  main()

2 个答案:

答案 0 :(得分:0)

Bottle / GAE doc介绍的标准方法是:

app = bottle.app()

然后调用dev_appserver.py,它会读取app.yaml并从您定义的脚本中导入您的应用,并处理GAE环境的所有其他内容。

您不应该直接运行.py。从瓶子方式运行将跳过dev_appserver中的那些句柄,包括模板缓存机制。当然,使用来自Google的util确实可行,但根据uwsgi或其他wsgi相关项目的文档,脚本模块中的app变量应该是对象应该是提供上层处理。

答案 1 :(得分:0)

来自文档:

  

编译后,模板会缓存在内存中。在清除模板缓存之前,对模板文件所做的修改不会产生任何影响。调用bottle.TEMPLATES.clear()这样做。在调试模式下禁用缓存。

方法运行:

bottle.run( debug = True )

将启用debuggmode。

默认模板是稳定版本0.11.6 中的SimpleTemplate。

  

您可以为自己喜欢的模板引擎编写自己的适配器   使用其中一个预定义的适配器。目前有四个完全   支持的模板引擎:

类,URL,装饰,渲染,功能

SimpleTemplate ,SimpleTemplate,引擎,视图(),模板()

MakoTemplate http://www.makotemplates.org,mako_view(),mako_template()

CheetahTemplate http://www.cheetahtemplate.org/,cheetah_view(),cheetah_template()

Jinja2Template http://jinja.pocoo.org/,jinja2_view(),jinja2_template()

<强>&GT;&GT;&GT;尝试使用其他模板引擎,而不是默认值。 &LT;&LT;&LT;

  

要使用MakoTemplate作为默认模板引擎,只需导入它即可   专门的装饰和渲染功能:

from bottle import mako_view as view, mako_template as template

<强>&GT;&GT;&GT;检查视图路径中是否有重复文件&lt;&lt;&lt;&lt;

TEMPLATE_PATH = ['./', './views/']

<强>&GT;&GT;&GT;打印出模板字典&lt;&lt;&lt;

print bottle.TEMPLATES