如何从模板调用Ajax视图?

时间:2015-01-19 15:07:32

标签: ajax django django-templates

我有一些通过Ajax调用加载的视图。但是,在渲染初始页面时,即进行Ajax调用的页面,我可能希望从一开始就立即加载一个Ajax视图。

即,在我的模板中,我有类似的东西:

{% if something_happen %}
<p>Some text.</p>
{% else %}
{# Render my ajax view here #}
{% endif %}

我可以用一些Javascript来替换{# Render my ajax view here #},这些Javascript会产生实际的Ajax请求,或者我可以在Django端做一些技巧,立即调用并渲染视图,从而节省了一次往返网络。

出于性能原因,我不喜欢第一个选项,第二个看起来很混乱。

我想到实现此服务器端技巧的最简洁方法是使用某种方法从模板内部调用和内联Ajax视图。第二种最好的方法是从Ajax视图中返回HttpResponse,并以某种方式将其内容嵌入到模板中。其他选择包括重复自己,我不能重复自己。

从一开始就嵌入Ajax视图的最佳方法是什么?是否有调用内联视图的模板标记?如果没有,我怎么写一个?这是一个好主意吗?怎么办?

1 个答案:

答案 0 :(得分:0)

如果您有一个实现通常可以从Ajax调用的视图的模板,您可以使用以下内容加载该服务器端:

{% include 'my_template.html' %}

假设您通常在Ajax视图中填充的任何变量已经存在于您包含模板的上下文中。如果您需要添加上下文,可以执行以下操作:

{% with local_var as template_var %}
    {% include 'my_template.html' %}
{% endwith %}