-1
子テンプレートに拡張された汎用テンプレートを作成しようとすると問題が発生します。Djangoのコンテンツブロックを使用するテンプレート
Post.html
{% extends "blog\blog_base.html" %}
{% block title %} The Blog {% endblock %}
{% block menu %}
{% endblock %}
<h1>The Blogs Index Page</h1>
{% block content %}
<h2> Posts </h2>
{% for post in latest_post_list %}
<h3> {{ post.title }} </h3>
<p> {{ post.body|linebreaks }} </p>
{% endfor %}
{% endblock %}
blog_base.html
<body>
{% block menu %}
{% for menu in menu %}
{{ menu.page_name }}
{% endfor %}
{% endblock %}
<div class = "content">
{% block content %} <p> Place Holder </p> {% endblock %}
</div>
</body>
コンテンツ作品のブロック。
メニューのブロックは、menu
オブジェクトのpage_name
プロパティを表示しません。
しかし、私が挿入した場合 - >ストレートPost.htmlテンプレートに
{% for menu in menu %}
{{ menu.page_name }}
{% endfor %}
は、それが動作します。ああ、自動的にメニューをリストにして、私を混乱させます。なぜそれは箇条書きでリストを作成し、各メニューオブジェクトをそれ自身の行に印刷するだけではないのですか?
子テンプレートにブロックを定義する唯一の方法は、親テンプレートが提供するものとは異なるコンテンツが必要な場合です。 –
正確に。基本テンプレートにあるものに**を追加するには、['{%block.super%}'](https://docs.djangoproject.com/ja/dev/ref/templates/)を使用します。言語/#テンプレート継承) – rnevius