django ajax和非ajax模板

django ajax和非ajax模板,django,Django,我有一个django模板——通常通过标准get请求加载。但是,我也希望将此模板用于ajax get 我知道我可以使用request.is_ajax来区分调用,从而确定应该为哪个页面提供服务——我不知道的是如何避免复制 问题是,该页面扩展了一个基本htm文件——一个包含所有提示(你知道,标题、菜单等等)的文件。但是我不希望它出现在ajax页面中!我想让页面显示出来,而不是扩展基本htm 我只能想,也许我有两个文件——一个只有内容(ajax版本),另一个扩展基本htm,并以某种方式导入(而不是扩展)

我有一个django模板——通常通过标准get请求加载。但是,我也希望将此模板用于ajax get

我知道我可以使用request.is_ajax来区分调用,从而确定应该为哪个页面提供服务——我不知道的是如何避免复制

问题是,该页面扩展了一个基本htm文件——一个包含所有提示(你知道,标题、菜单等等)的文件。但是我不希望它出现在ajax页面中!我想让页面显示出来,而不是扩展基本htm

我只能想,也许我有两个文件——一个只有内容(ajax版本),另一个扩展基本htm,并以某种方式导入(而不是扩展)第一个文件


任何IDE我将如何做上述工作,或者我打算如何解决这一问题?

扩展的值可以是一个变量。因此,您只需定义一个省略“铃铛和哨子”的
base\u ajax
html,在您的视图中,您将
base
base\u ajax
发送到模板上下文,具体取决于。

解决方案1:

{% block menu %}
menu goes here
{% endblock menu %}
{% extends base.html %}
{% extends base.html %}

{% block menu %}
{% end block %}
{% extends base.html %}
{% ifequal ajax %}
{% block menu %}
{% end block %}
{% endifequal %}
base.html:

{% block menu %}
menu goes here
{% endblock menu %}
{% extends base.html %}
{% extends base.html %}

{% block menu %}
{% end block %}
{% extends base.html %}
{% ifequal ajax %}
{% block menu %}
{% end block %}
{% endifequal %}
非ajax.html:

{% block menu %}
menu goes here
{% endblock menu %}
{% extends base.html %}
{% extends base.html %}

{% block menu %}
{% end block %}
{% extends base.html %}
{% ifequal ajax %}
{% block menu %}
{% end block %}
{% endifequal %}
ajax.html:

{% block menu %}
menu goes here
{% endblock menu %}
{% extends base.html %}
{% extends base.html %}

{% block menu %}
{% end block %}
{% extends base.html %}
{% ifequal ajax %}
{% block menu %}
{% end block %}
{% endifequal %}
解决方案2:

{% block menu %}
menu goes here
{% endblock menu %}
{% extends base.html %}
{% extends base.html %}

{% block menu %}
{% end block %}
{% extends base.html %}
{% ifequal ajax %}
{% block menu %}
{% end block %}
{% endifequal %}
使用相同的base.html

ajax和非ajax.html:

{% block menu %}
menu goes here
{% endblock menu %}
{% extends base.html %}
{% extends base.html %}

{% block menu %}
{% end block %}
{% extends base.html %}
{% ifequal ajax %}
{% block menu %}
{% end block %}
{% endifequal %}

除了@Daniel response,如果在上下文处理器中有
请求
,则可以使用模板过滤器,例如

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

这一行应该出现在页面和ajax内容使用的每个模板中。

这是如此优雅,他们正在重新制作“tiffany's早餐”,以取代Hepburn