我创建了一个名为 course.html 的 Jinja2 模板,它定义了课程的基本结构。由此,我为每节实际课程派生一个子模板(因为每节课的内容不同)。例如,intro.html、variables.html、lists.html 和functions.html 都派生自lesson.html。
除了幻灯片、练习等等,每节实际课程都有一个 YouTube 视频。我想将视频的 ID 放在子模板文件中,然后将实际引用视频的 HTML 放在父模板(即 course.html)中,以确保每个视频都以相同的方式引用和格式化。例如,我希望 course.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 和时间(这使得它们更难提取以在其他地方使用:我可以用正则表达式来做,但我真的不想)。
有没有一种干净的方法来定义子模板中的值以在父模板中使用?