web-dev-qa-db-ja.com

{%extends '...'%}を条件付きにする方法はありますか? -Django

AJAXと通常のHTTP呼び出しの間でテンプレートを共有したいのですが、唯一の違いは、1つのテンプレートがbase.html htmlで提供され、もう1つのテンプレートは提供されないことです。

何か案が?

67
RadiantHex

変数を使用します。

{% extends base_template %}

ビューで、それをビューの「base.html」に設定するか、ブロックのみを提供し、他には何も提供しない新しい「ajax.html」ファイルを設定します。

85
Daniel Roseman

他の回答では、追加のコンテキスト変数を渡す必要があります。ただし、リクエストオブジェクトにアクセスできる限り、必要はありません。

{% extends request.is_ajax|yesno:"app/base_ajax.html,app/base.html" %}

これははるかに便利だと思いました。

125
Cruel
{% extends override_base|default:'base.html' %}

追伸これは古い質問であることは知っていますが、回答を検索しているときに見つかりました。多分それは同じ問題を持つ他の誰かを助けるでしょう。

24
Brigand

{%extends variable%}を使用できます

ビューでコンテキストを作成するときに、変数のベーステンプレート名を渡します。

http://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#extends

7
Tom Gruner