CherryPy + Jinja,在哪里初始化环境

CherryPy + Jinja,在哪里初始化环境

问题描述:

我正在使用CherryPy和Jinja作为模板系统在python中编写应用程序。可能需要说我是这些工具的初学者。 我现在面临的问题是我无法确定在哪里初始化Jinja的Environment类。CherryPy + Jinja,在哪里初始化环境

目前我有

  • application.py(入口点,建立环境并启动服务器)
  • root.py(根页面类CherryPy的,必须从 'application.py' 进口,并且必须导入'application.py'来检索实例化的环境)
  • pages.py(cherry.py的其他页面类必须导入'application.py',并且必须从根目录导入以构建树)

试图运行,看起来似乎是循环引用并失败(应用程序> root>页面>应用程序)。

我应该坚持只有一个环境实例,还是可以在root.py和pages.py中有一个实例?

这是正确的模式?

你不应该真的repeat yourself。如果我是你,我会创建一个新的python模块templates.py,并把所有的jinja环境配置/创建放在那里。之后,只需在需要的地方导入该环境(例如from templates import jinjaenv)。在这种情况下,您可以将事情保持简单和可扩展性,以备将来使用。

+0

好,但模板模块可以被多个模块引用。 python是否知道'jinjaenv'应该是'相同的'实例对象,还是只是在每次导入时实例化一个新对象? –

+0

这将是同一个实例。模块中定义的所有变量(类,函数)都是共享的。您可以将python模块视为一次加载并随后在import语句的帮助下引用的对象。 –

+0

接受答案,然后;) –