コンテンツにスキップ

Tips

最終更新日: 2021-04-05

substring

確認環境

Env Ver
Jinja 2.11.0
Python 3.8.5

サンプルコード

  • 変数名[begin:end]で指定する
    • {% set some_variable = string_variable[0:100] %}

ループ処理で変数代入を行う

確認環境

Env Ver
Jinja 2.11.0
Python 3.8.5
  • Jinja2 でループ処理の中で変数の足しこみとかをするやつ
    • 代入先の変数宣言は {% set ns = namespace(title = "") %} のようにしてやる必要がある
    • 後はループの中で set してやれば上手くいく
    • 変数は宣言したブロックがスコープになるので、スコープを広げたいときは適当にブロックを上げてやると良い

サンプルコード

  • MkDocs のテンプレートでパンくずリストを生成するコード
    • [A] [B] [C] みたいな感じ
1
2
3
4
{% set ns = namespace(title = "") %}
{% for doc in page.ancestors %}
    {% set ns.title = "[" + doc.title + "] " + ns.title %}
{% endfor %}

テンプレートファイルを読み込む

確認環境

Env Ver
Jinja 2.11.0
Python 3.8.5

サンプルコード

  • フォルダ構成
1
2
3
4
5
6
7
8
─src
    ├─app
    │   ├─configs
    │   │    └config.yaml
    │   ├─templates
    │   │         └─main.html
    │   └─__init__.py
    └─main.py
  • コード
1
2
3
4
5
6
7
8
9
from jinja2 import Environment, PackageLoader, select_autoescape
env = Environment(
    # appはフォルダ構成のappフォルダを指す
    loader=PackageLoader('app', 'templates'),
    autoescape=select_autoescape(['html', 'xml'])
)
template = env.get_template('main.html')
# `render()` の引数は埋め込み変数を KeyValue 形式で指定
print(template.render(the='variables', go='here'))

yaml ファイルから設定をロードする

確認環境

Env Ver
Jinja 2.11.0
Python 3.8.5

サンプルコード

  • フォルダ構成
1
2
3
4
5
6
7
8
─src
    ├─app
    │   ├─configs
    │   │    └config.yaml
    │   ├─templates
    │   │         └─main.html
    │   └─__init__.py
    └─main.py
  • コード
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
from yaml import safe_load as yamlLoad
from jinja2 import Environment, PackageLoader, select_autoescape
env = Environment(
    loader=PackageLoader('app', 'templates'),
    autoescape=select_autoescape(['html', 'xml'])
)

template = env.get_template('main.html')
with open('app/configs/config.yaml') as fYaml:
    print(template.render(yamlLoad(fYaml)))