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

发布于 2024-12-16 12:54:36 字数 466 浏览 1 评论 0原文

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

目前我有

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

尝试运行最终会出现循环引用并失败(application >根>页面>应用)。

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

哪种模式是正确的?

I'm writing an application in python using CherryPy and Jinja as the template system. May be needed to say that i'm a beginner with these tools.
The problem I'm facing now is I cannot figure where to initialize Jinja's Environment class.

Currently I have

  • application.py (entry point, sets up Environment and starts server)
  • root.py (root page class for cherrypy, must be imported from 'application.py', and must import 'application.py' to retrieve instantiated Enviroment)
  • pages.py (other page classes for cherry.py, must import 'application.py', and must be imported from root to build the tree)

Trying to run that ends up in what seems to be a circular reference and fails (application > root > pages > application).

Should I stick to only one Environment instance or is it okay to have an instance at root.py and another in pages.py?

Which is the correct pattern for this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

吃不饱 2024-12-23 12:54:36

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

You shouldn't really repeat yourself. If I were you I would create a new python module templates.py and put all the jinja environment configuration / creation there. Afterwards you can simply import that environment wherever you need it (e.g. from templates import jinjaenv). In this case you keep things simple and extensible for future use.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文