質問: djangoテンプレートは、その名前付きURLを見つけることができますか?または、どのテンプレートがそれを拡張しているかを基本テンプレートが知ることができますか? 私のURLConfでは、URLをきちんと名前を付けて、逆引き参照を行い、すべてをDRYに保つことができます。 私のすべてのテンプレートは `base.html` という名前のユニバーサルテンプレートを拡張しています。 `base.html` では、多くのHTMLフレームワークの中で、私はログインフォームを表示しています。 Djangoが提供する `auth_views.login` ビューを使用して独自のテンプレート `login.html` を表示するビューもあります。このテンプレートは、他のすべてのテンプレートと同様に、base.htmlテンプレートを拡張します。 このような場合、 `base.html` テンプレートはログインフォームを表示しません( `login.html` テンプレートは既にログインフォームを表示しています)。これを行うには、 `base.html` が `login.html` の拡張に使用されていることを知っている必要があります。拡張されるhtmlの名前は `'myapp-login'` です。 これを行う方法を提案できますか?私は `suppress_header_login_form` varを含む特別なコンテキストで `auth_views.login` を呼び出す独自のビューを作成することを考えています。このvarに基づいて、 `base.html` テンプレートはログインフォームを抑制することができます。しかし、これを達成するためのより良い方法があるかどうかを確認しようとしています。
回答: テンプレートの継承とブロックでこれを管理できます。 あなたの `base.html` は、ログイン用のHTMLを囲む `login` というブロックを定義し、空のブロックを上書きする `login.html` バージョン: base.html: ``` {% block login %} ... login form here ... {% endblock %} {% block main %} {% endblock %} ``` login.html: ``` {% extends "base.html" %} {% block login %} {% endblock %} {% block main %} ... real login form here ... {% endblock %} ```