私はピラミッドを使用してワークフローアプリを作成しており、アプリケーションをモジュール化可能にする方法を探しています。つまり、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 つのアプリケーションを作成することです。
たとえば、次のように、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: モジュールの各フォルダ内のマコ検索を希望のテンプレートにすることはできますか?
質問2: コアアプリのbase.makoをworkflow-app1.makoに継承させることはできますか?
ご回答ありがとうございます。