5

我刚刚在 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()
4

2 回答 2

0

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

app = bottle.app()

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

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

于 2012-04-22T15:34:23.273 回答
0

从文档中:

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

方法运行:

bottle.run( debug = True )

将启用调试模式。

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

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

类,URL,装饰器,渲染,函数

简单模板,简单模板,引擎,视图(),模板()

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()

>>> 尝试使用其他模板引擎,而不是默认的。<<<

要将 MakoTemplate 用作您的默认模板引擎,只需导入其专用的装饰器和渲染函数:

from bottle import mako_view as view, mako_template as template

>>> 检查视图路径中是否存在重复文件 <<<

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

>>> 打印出模板字典 <<<

print bottle.TEMPLATES
于 2013-07-18T16:36:40.220 回答