【发布时间】:2013-04-09 01:55:29
【问题描述】:
我正在使用金字塔创建一个工作流应用程序,并且我正在搜索如何使应用程序可模块化:这意味着使用 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 从核心应用继承 base.mako?
提前感谢您的回答。
【问题讨论】: