1

レッスンの基本構造を定義する、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正規表現でそれを行うことができますが、私はむしろそうしません)。

親テンプレートで使用する子テンプレートの値を明確に定義する方法はありますか?

4

1 に答える 1

0

setを使用できます、DOC は次のとおりです。

コード ブロック内では、変数に値を割り当てることもできます。最上位 (ブロック、マクロ、またはループの外側) の割り当ては、最上位マクロと同様にテンプレートからエクスポートされ、他のテンプレートでインポートできます。

同じ質問がここにあります。

于 2016-11-26T02:05:26.083 に答える