jinja2テンプレートの中で文字列をフォーマット
いまPythonでjinja2テンプレートを出力するプログラムを作っているのですが、jinja2テンプレートの中で文字列をフォーマットしようとすると、いろいろな問題が起きてしまったので質問します。
追記
質問がわかりにくかったようです。申し訳ございませんでした。
私の目的は Jinja2テンプレートファイルをgenerateする ことです。
生成するJinja2テンプレートファイルの内容は以下の通りです。
{%- set title="[main_title]" %} {%- set description="[description]" -%} {%- extends "outer.jinja2" -%} {% block breadcrumb %} <nav class="BreadCrumb" data-element="foundation"> <div class="bread-crumb-container" data-element="container"> <ol class="bread-crumb" data-grid="12" data-element="component" itemscope itemtype="http://schema.org/breadcrumblist"> <li class="crumb" itemprop="itemlistelement" itemscope itemtype="http://schema.org/listitem"> <a class="link" href="/" itemprop="item"> <span itemprop="name">top</span> </a> </li> <li class="crumb" itemprop="itemlistelement" itemscope itemtype="http://schema.org/listitem"> <a class="link" href="[parent_link]" itemprop="item"> <span itemprop="name">[parent]</span> </a> </li> <li class="crumb" itemprop="itemlistelement" itemscope itemtype="http://schema.org/listitem"> <a class="link" href="[link]" itemprop="item"> <span itemprop="name">[title]</span> </a> </li> </ol> </div> </nav> {% endblock %} {% block article %} <article class="main-contents" data-grid="9" data-element="component"> <header class="content-header" data-element="component"> <h3 class="entypo-chart-pie title">[title]</h3> </header> <section class="content-toc" data-element="component"> <h4 class="heading">目次</h4> <p class="title">[title]</p> <ul class="toc"> <li class="item"><a class="link" href="#"></a></li> </ul> </section> <section id="" class="content-article" data-element="component"> <h4 class="heading"></h4> <p class="sentence"></p> </section> <footer class="content-footer" data-element="component"> </footer> </article> </div> </main> {% endblock %}
この内容を生成したいがために [main_title]
の部分をフォーマットする必要があるのです。
パターン1 {} の場合
{%- set title="{title}" -%}
このようなjinja2テンプレートを出力しようとすると、
py
1print "{%- set title='{title}' -%}".format(title=u"タイトル") 2 File "<console>", line 1 3 print "{%- set title="{title}" -%}".format(title=u"タイトル") 4 ^ 5SyntaxError: invalid syntax
jinja2テンプレートである{%- -%}
部分をフォーマット文字列と勘違いしてInvarid Syntaxエラーが出てしまいます。
パターン2 %()s の場合
では古いバージョンのフォーマット文字列である%
を使おうと考えました。
{%- set title="%(title)s" -%}
これを出力しようとすると、
py
1print "{%- set title='%(title)s' -%}" % {"title": u"タイトル"} 2Traceback (most recent call last): 3 File "<console>", line 1, in <module> 4TypeError: not enough arguments for format string
jinja2テンプレートである{%- -%}
部分をフォーマット文字列と勘違いしてType Errorが出てしまいます。
このようにどうやってもエラーが出てしまいます。どのようにして文字列をフォーマットしたらよろしいのでしょうか…
ご教授ください。よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/21 01:11