0

私はdjangoテンプレートを持っています - 通常は標準のgetリクエストを介してロードされます。ただし、このテンプレートを ajax get にも使用したいと思います。

request.is_ajax を使用して呼び出しを区別できることを知っているため、どのページを提供する必要があるかがわかります-わからないのは、レプリケーションを回避する方法です。

問題は、ページが基本の htm ファイルを拡張していることです。このファイルには、すべての機能 (ヘッダー、メニューなど) が含まれています。ただし、これを ajax ページに表示したくありません。ベースhtmを拡張せずに、ページが表示されるようにしたいのですが

おそらく2つのファイルがあるとしか思えません.1つはコンテンツ(ajaxバージョン)だけで、もう1つはベースhtmを拡張し、最初のファイルを何らかの形でインポートします(拡張しません...

上記をどのように行うか、またはこれを一般的に解決する方法はありますか?

4

3 に答える 3

12

@Daniel応答に加えて、コンテキストプロセッサを使用している場合は、 yesnoテンプレートフィルタを使用できます。request

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

この行は、ページとajaxコンテンツの両方に使用するすべてのテンプレートに含まれている必要があります。

于 2012-06-12T13:09:08.017 に答える
3

の値はextends変数にすることができます。したがってbase_ajax、「ベルとホイッスル」を省略した html を定義するだけで、ビューで、baseまたはbase_ajaxテンプレート コンテキストに応じて送信します。

于 2012-06-12T13:03:15.943 に答える
0

解決策 1 :

base.html:

{% block menu %}
menu goes here
{% endblock menu %}

非 ajax.html:

{% extends base.html %}

ajax.html:

{% extends base.html %}

{% block menu %}
{% end block %}

解決策 2:

同じ base.html を使用する

ajax-and-non-ajax.html:

{% extends base.html %}
{% ifequal ajax %}
{% block menu %}
{% end block %}
{% endifequal %}
于 2012-06-12T13:04:51.583 に答える