【发布时间】:2015-03-17 15:17:39
【问题描述】:
我有一些通过 Ajax 调用加载的视图。但在渲染初始页面时,即进行 Ajax 调用的页面,我可能希望从一开始就立即加载我的 Ajax 视图之一。
即,在我的模板中,我有类似的内容:
{% if something_happen %}
<p>Some text.</p>
{% else %}
{# Render my ajax view here #}
{% endif %}
我可以用一些 Javascript 替换 {# Render my ajax view here #} 来发出实际的 Ajax 请求,或者我可以在 Django 端做一些技巧,立即调用和渲染视图,节省一次网络往返。
出于性能原因,我不喜欢第一个选项,而第二个似乎很乱。
我认为实现这个服务器端技巧的最简洁的方法是从模板内部调用和内联 Ajax 视图。第二种最佳方式是获取从 Ajax 视图返回的 HttpResponse,并以某种方式将其内容嵌入模板中。其他选项包括重复自己,我不能重复自己。
从一开始就嵌入 Ajax 视图的最佳方式是什么?是否有调用内联视图的模板标签?如果没有,我怎么写一个?这是一个好主意吗?如何进行?
【问题讨论】:
-
请分享初始和ajax视图控制器的代码。
-
什么意思?对于ajax部分,代码是一样的。
-
Django 具有 URL 映射到的视图(基于函数和类)。如果您可以共享您用于初始视图的视图代码以及 ajax 视图的代码,我将能够制定一个答案。答案可能会有所不同,具体取决于您在这些视图中执行的操作。
-
我现在没有代码,但我基本上有 2 个 ajax 视图,每个视图都有不同的表单(它们可能接受 POST 或 GET 请求,就像 Django 文档中使用表单的方式一样)。我可能需要从一开始就使用一个,另一个或一个都不使用。现在你让我想到了,在非 ajax 视图中实例化空表单可能就足够了。
标签: ajax django django-templates