更新日:
投稿日:
投稿日:
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]みたいな感じ
{% 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 |
サンプルコード
- フォルダ構成
─src
├─app
│ ├─configs
│ │ └config.yaml
│ ├─templates
│ │ └─main.html
│ └─__init__.py
└─main.py
- コード
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 |
サンプルコード
- フォルダ構成
─src
├─app
│ ├─configs
│ │ └config.yaml
│ ├─templates
│ │ └─main.html
│ └─__init__.py
└─main.py
- コード
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)))
更新日:
投稿日:
投稿日:
概要
- Jinja2で作られている
- Python向けのテンプレートエンジン
- これを理解することで自在にカスタマイズできる。たぶん
- テンプレート変数について、まともなリファレンスはないので、mkdocsのGitHubリポジトリを眺めて知るのが早い
- www.mkdocs.org にも一応書いてあるが、網羅されていない
カスタマイズ方法
- まずはMaterial for MkDocsを読んでリファレンスを理解する
- 設定で解決する内容ならここで終わり
- テンプレートのカスタマイズが必要な場合、
overrides/main.htmlを生やしてブロック単位でいじる- 元のブロックはgithub.comを参考にする
- 構文はjinja.palletsprojects.com