私たちは、フラスコとdjangoを融合したアプリを持っており、makoをテンプレートエンジンとして使用しています。モバイル、現在私が行っていることは私のテンプレートフォルダ内に二つのサブフォルダを作成し、私は(「index.mako」)をレンダリング呼び出した場合、たとえばのでmako + flask-djangoアプリの別のモバイルテンプレート
templates
mobile
base.mako
index.mako
desktop
base.mako
index.mako
results.mako
適切なマコをつかむためにrenderメソッドをオーバライドすることであり、要求がrequest.mobile==True
である場合、ファイルURLをmobile/index.mako
に変換します。 'mobile/{some template} .mako'が存在しない場合、自動的に 'desktop/{some template} .mako'を取得します。デスクトップ。 問題は今、継承が付属して、私は次のテンプレート
results.mako
<%inherit file="base.mako" />
<select>
------
</select>
を持っていると言うと私は、パス== request.mobileで(「results.mako」)レンダリング真の呼び出しresults.makoはdesktop/results.makoに変換されます(results.makoはモバイル用に存在しないため)。results.makoは 'desktop/base.mako'から継承します(相対パスを使用するため) base.mako 'が存在します。これは、モバイルとモバイル/ベース.makoが存在するために使用する必要があります。
どのようにエレガントでこれを解決するためのアイデア(makoの内側にifsを避ける)?多分dir makeが何とかテンプレートを見つけたと思って変更することによって?