0

AJAX と通常の HTTP 呼び出しの間でテンプレートを共有したいと思います。唯一の違いは、一方のテンプレートは base.html html を拡張する必要があり、もう一方のテンプレートは拡張しないことです。

使うことができます

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

いつ拡張するかを動的に決定するためですが{% block 'some_div' %}{% endbock %}、コンテンツを配置する場所をレンダラーに伝えるタグも含める必要があります。jQuery は .xml を使用してコンテンツを配置する場所を指示するため、ajax 呼び出しではこれらのタグを省略する必要があります$('somediv').html(response)

ajax 呼び出しではない場合に、これらのブロック タグを動的に含める方法についてのアイデアはありますか?

私はそれを理解するためにこの質問を参照してきました:

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

{% if %} で機能させようとします:

{% extends request.is_ajax|yesno:",stamped/home.html" %}
{% if request.is_ajax == False%}
{% block results %}
{% endif %}
{% load stamped_custom_tags %}

...
Content
...
{% if request.is_ajax == False%}
{% endblock %}
{% endif %}

しかし、パーサーが {% endif %} に遭遇すると、これは失敗します

4

2 に答える 2

0

私の解決策:

{% extends x|yesno:"stamped/blank.html,stamped/home.html" %}

含まれる場所blank.html:

{% block results %}{% endblock %}

<!-- to allow for corrected shared rendering 
    with ajax posts and normal django rendering -->

これは、home.html拡張する結果ブロックを含む標準のアプリ ページです。

于 2013-09-05T13:47:51.670 に答える