レッスンの基本構造を定義する、lesson.html という名前の Jinja2 テンプレートを作成しました。そこから、実際のレッスンごとに 1 つの子テンプレートを派生させます (各レッスンの内容が異なるため)。たとえば、intro.html、variables.html、lists.html、および functions.html はすべて、lesson.html から派生します。
スライド、演習などに加えて、実際の各レッスンには YouTube ビデオがあります。ビデオの ID を子テンプレート ファイルに入れたいのですが、実際にビデオを参照する HTML を親テンプレート (つまり、lesson.html) に入れて、すべてのビデオが同じ方法で参照およびフォーマットされるようにします。たとえば、lesson.html を次のようにしたいと思います。
<div class="youtube"><br/>
<iframe title="{{TITLE}}" time="{{TIME}}" src="http://www.youtube.com/embed/{{ID}}"></iframe>
<br/>
</div>
次に、TITLE、TIME、および ID を子テンプレート ファイル自体ですべて定義します (これは、それらを格納する最も論理的な場所だからです)。私の現在のハックは、これらの値を引数として取り、適切な場所に挿入される HTML の塊を返す関数を作成することです。
{{youtube("Title of this Lecture", "abcde01234", "05:10")|safe}}
ただし、(a) 関数呼び出しよりも単純なテンプレート展開を使用したい、(b) タイトル、YouTube ID、および時間がレッスン テンプレート ファイルで明示的に識別されていない (これにより、他の場所で使用するために抽出するのが難しくなります: I正規表現でそれを行うことができますが、私はむしろそうしません)。
親テンプレートで使用する子テンプレートの値を明確に定義する方法はありますか?