ここで何かが見つからないかもしれませんが、コンテキストがインクルードに渡されてもDjangoがこれを許可しないという特別な理由がありますか? block
をinclude
にレンダリングすることは、(読みやすさのために)有用であるようです。なぜなら、Angularがディレクティブを使用する方法に似たマークアップの密度を低くするからです。Djangoはブロック内のブロックを許可しないのはなぜですか?
これを実現する別のテンプレートタグはありますか?
例。 下の画像では、navbar
はサイト全体ですが、navbar2
はビューに依存し、付属のcontent.html
内にあります。これは、スケルトンにすべてのブロックをロードしていないので、よりきれいなマークアップを可能にします...しかし、残念ながらそれは動作しません。
base.html
<html>
<head>
...
</head>
<body>
<nav>
{% block navbar %}
{% endblock %}
</nav>
{% include "content.html" %}
{% include "footer.html" %}
</body>
</html>
content.html
<header>{{ request.view_name }}</header>
<nav>
{% block navbar2 %}
{% endblock %}
</nav>
{% block content %}
{% endblock %}
モデルするlist.html
{% extends "base.html" %}
{% block navbar2 %}
{% for action in view_actions %}
<li>{{ action }}</li>
{% endfor %}
{% endblock %}
最初にすべてをインポートしてから、結果のテンプレートを解析するのは面白いことです。私はJinja2がこれをサポートしていることに気付きました。 –
@DanielvanFlymen - 私はJinja2を使用していないので、私はそれが私が恐れている仕組みについてコメントできません。 – Sayse