質問

Jinja2のので、私はこのようなベーステンプレートを持っています

<title>{% block title %}{% endblock %} - example.com</title>
[...]

<h1> 
  {% block title %}{% endblock %} - example.com
</h1>

Jinja2のは、それから、次のメッセージで失敗します:

  lines = [self.message, '  ' + location]
: block 'title' defined twice

これは私がやろうとしています何のように、今は明白でなければならない - 二つの場所で同じタイトル持っている:実際には他の派生テンプレートで提供されるTITLEタグとH1タグが、タイトルの一部を

どのように1は、一般的にこれを実現するのでしょうか?

役に立ちましたか?

解決

こちら、ブロックを定義することでマクロを作成し、文書化されるように特別な「自己」オブジェクト内のブロックの名前:

<title>{% block title %}{% endblock %} - example.com</title>
[...]

<h1> 
  {{ self.title() }} - example.com
</h1>

他のヒント

アイデアはマクロの内部ブロックを作成し、マクロを2回呼び出す代わりに「ブロック」タグを有するとすることで二回繰り返した。

最新Jinja2のバージョンでこの作品ます:

layout.html

{%- extends "base.html" -%}

{%- macro duplicated() -%}
    {% block overrideninchild %}{% endblock %}
{%- endmacro -%}

{% block base_content %}
    {{ duplicated() }}
    {{ duplicated() }}
{% endblock %}

のchild_page.html

{%- extends "layout.html" -%}

{% block overrideninchild %}
   Should be visible twice.
{% endblock %}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top