我正在使用金字塔创建工作流应用程序,并且正在搜索如何使应用程序可模块化:这意味着使用 sqlalchemy 模型、使用 wtforms 的基本表单以及使用 mako 的一些基本模板创建核心应用程序。
“核心”应用程序的基本结构是:
App_Core/core.ini
/setup.py
/...
/App_Core/
/__init__.py
/models.py
/forms.py
/utils.py
/templates/
/templates/base.mako...
/static/
/static/staticfiles...
我的目标是为每个工作流创建1 个应用程序,这些应用程序将包含在核心应用程序中:似乎可以通过金字塔提供的includeme功能来做到这一点。
我想通过 core.ini 文件包含每个工作流,例如:
pyramid.includes =
workflow_app1
workflow_app2
workflow_app3
...
我定义了一个名为workflow_app1的新应用程序,其结构如下:
worflow_app1/
/setup.py
/...
/workflow_app1/
/__init__.py
/models.py
/forms.py
/views.py
/templates/
/templates/workflow_app1.mako
/...
_init _.py文件将包含 includeme 函数并将定义新路由:
def includeme(config):
config.add_route('route1', '/route1/')
config.add_route('route2', '/route2/')
config.scan()
当我为 worflow_app1 编写视图时,我正在渲染到该应用程序包含的模板,但是当我从核心应用程序调用它时,它无法渲染模板并给出以下错误:
TopLevelLookupException: Cant locate template for uri 'workflow-app1.mako'
这个错误非常合乎逻辑,因为 mako.directories 指令是通过路径App_Core_PATH/templates给出的,所以我的模板应该在同一个文件夹中。
问题1:是否可以在模块的每个文件夹中进行mako搜索想要的模板?
问题2:是否可以让workflow-app1.mako从核心app继承base.mako?
提前感谢您的回答。