Goal
- JinjaのIncludeブロックで指定するファイル名を変数で指定する
Includeブロック内では、Jinjaの構文では変数が展開されず、文字列として認識されてしまう。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
</head>
<body>
{% include "{{ variable }}" %} <!-- これだと Template not found error となってしまう-->
</body>
</html>
Environment
- Jinja 3.1.2
Resolve
Jinja2 2.7.1 以降では、下記で展開可能。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
</head>
<body>
{% include "%s" % variable %}
{% include "/files/%s" % variable %}
</body>
</html>
Jinja2 2.7.1 以前でも、理論上は下記で回避可能。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
</head>
<body>
{% include "templates/case/"+variable+"/intro.html" %}
{% include "/files/"+cid %}
</body>
</html>
Reference