我正在编写一个站点,并且使用Ajax或正常请求请求一些页面。当然,在使用Ajax进行请求时,我想渲染一个略有不同的模板。我已经尝试了几种方法(一个很好的想法但是有错误的render_block片段,使用{%include%}分隔模板,同时分解代码,使用{%ifnot request.is_ajax%}来呈现内容,如工具栏或菜单,只有不是Ajax)。所以我认为这样做真的很酷:
<div> A menu that should not appear with Ajax </div>
{% ajax %}
<div> The Ajax part </div>
{% endajax %}
<div> A footer that should not appear with Ajax </div>
然后正常请求返回:
<div> A menu that should not appear with Ajax </div>
<div> The Ajax part </div>
<div> A footer that should not appear with Ajax </div>
Ajax请求:
<div> The Ajax part </div>
但是,我现在还没有从哪里开始...我已经编写了模板标签,但从来没有做过这么复杂的事情!它甚至可能吗?
答案 0 :(得分:0)
这听起来像是一种令人困惑的方式 - 我肯定坚持:
{% if not request.is_ajax %}
<div> A menu that should not appear with Ajax </div>
{% endif %}
<div> The Ajax part </div>
{% if not request.is_ajax %}
<div> A footer that should not appear with Ajax </div>
{% endif %}
或者,将模板分开,这样您想要渲染的内容都在一个模板中(我们称之为my_ajax_template.html
):
<div> The Ajax part </div>
当响应来自AJAX的请求时,您的视图代码只能呈现该模板,但在响应“正常”请求时,您可以呈现如下所示的模板:
<div> A menu that should not appear with Ajax </div>
{% include 'my_ajax_template.html' %}
<div> A footer that should not appear with Ajax </div>