【问题标题】:CherryPy + Jinja, where to initialize EnvironmentCherryPy + Jinja,在哪里初始化环境
【发布时间】:2011-11-16 22:21:43
【问题描述】:

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

目前我有

  • application.py(入口点,设置环境并启动服务器)
  • root.py(cherrypy的根页面类,必须从'application.py'导入,并且必须导入'application.py'来检索实例化的Enviroment)
  • pages.py(cherry.py 的其他页面类,必须导入“application.py”,并且必须从根目录导入才能构建树)

尝试运行最终似乎是循环引用并失败(应用程序>根>页面>应用程序)。

我应该只使用一个 Environment 实例,还是可以在 root.py 中创建一个实例,在 pages.py 中创建另一个实例?

这是正确的模式?

【问题讨论】:

    标签: python cherrypy jinja2


    【解决方案1】:

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

    【讨论】:

    • 很好,但是模板模块可以被多个模块引用。 python 是否知道“jinjaenv”应该是“相同的”实例对象,或者它只是在每次导入时实例化一个新对象?
    • 这将是同一个实例。模块中定义的所有变量(类、函数)都是共享的。您可以将 python 模块视为加载一次然后在 import 语句的帮助下引用的对象。
    猜你喜欢
    • 2014-04-27
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    • 2023-02-04
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 2016-08-16
    相关资源
    最近更新 更多