teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記

2017/08/18 05:19

投稿

quickquip
quickquip

スコア11314

answer CHANGED
@@ -19,4 +19,77 @@
19
19
 
20
20
  ----
21
21
  (追記)
22
- jinja2で`{%- -%}`は、テンプレート用のデリミタではなくて、制御構造を記述するデリミタですよ。
22
+ jinja2で`{%- -%}`は、テンプレート用のデリミタではなくて、制御構造を記述するデリミタですよ。
23
+
24
+
25
+ ----
26
+ (追記)
27
+ 動機がまったく理解できないのですが、どうしてもというなら、私ならjinja2のraw stringを使って固定部分を記述してレンダリングさせますね。`%`演算子や`format`関数にはそういったデリミタはないので、`%%`や`{{`などと全部エスケープしてやらないといけないので。
28
+ 以下はtitleだけ差し挟んだ場合です。
29
+ ```Python
30
+ from jinja2 import Template
31
+
32
+ template = Template(u"""{% raw %}{%- set title="[main_title]" %}
33
+ {%- set description="[description]" -%}
34
+
35
+ {%- extends "outer.jinja2" -%}
36
+
37
+ {% block breadcrumb %}
38
+
39
+ <nav class="BreadCrumb" data-element="foundation">
40
+ <div class="bread-crumb-container" data-element="container">
41
+ <ol class="bread-crumb" data-grid="12" data-element="component" itemscope itemtype="http://schema.org/breadcrumblist">
42
+
43
+ <li class="crumb" itemprop="itemlistelement" itemscope itemtype="http://schema.org/listitem">
44
+ <a class="link" href="/" itemprop="item">
45
+ <span itemprop="name">top</span>
46
+ </a>
47
+ </li>
48
+
49
+ <li class="crumb" itemprop="itemlistelement" itemscope itemtype="http://schema.org/listitem">
50
+ <a class="link" href="[parent_link]" itemprop="item">
51
+ <span itemprop="name">[parent]</span>
52
+ </a>
53
+ </li>
54
+
55
+ <li class="crumb" itemprop="itemlistelement" itemscope itemtype="http://schema.org/listitem">
56
+ <a class="link" href="[link]" itemprop="item">
57
+ <span itemprop="name">{% endraw %}{{ title }}{% raw %}</span>
58
+ </a>
59
+ </li>
60
+
61
+ </ol>
62
+ </div>
63
+ </nav>
64
+
65
+ {% endblock %}
66
+
67
+ {% block article %}
68
+ <article class="main-contents" data-grid="9" data-element="component">
69
+ <header class="content-header" data-element="component">
70
+ <h3 class="entypo-chart-pie title">{% endraw %}{{ title }}{% raw %}</h3>
71
+ </header>
72
+
73
+ <section class="content-toc" data-element="component">
74
+ <h4 class="heading">目次</h4>
75
+ <p class="title">{% endraw %}{{ title }}{% raw %}</p>
76
+ <ul class="toc">
77
+ <li class="item"><a class="link" href="#"></a></li>
78
+ </ul>
79
+ </section>
80
+
81
+ <section id="" class="content-article" data-element="component">
82
+ <h4 class="heading"></h4>
83
+ <p class="sentence"></p>
84
+ </section>
85
+
86
+ <footer class="content-footer" data-element="component">
87
+ </footer>
88
+ </article>
89
+
90
+ </div>
91
+ </main>
92
+ {% endblock %}{% endraw %}
93
+ """)
94
+ print template.render(title=u'タイトル')
95
+ ```

1

追記

2017/08/18 05:19

投稿

quickquip
quickquip

スコア11314

answer CHANGED
@@ -15,4 +15,8 @@
15
15
  ```
16
16
  set title="タイトル"
17
17
  ```
18
- と出力する(出力させる)と思うのですが。
18
+ と出力する(出力させる)と思うのですが。
19
+
20
+ ----
21
+ (追記)
22
+ jinja2で`{%- -%}`は、テンプレート用のデリミタではなくて、制御構造を記述するデリミタですよ。