题
我有一个django景,而这一观点返回的一个表,它是异步填充有一个阿贾克斯的电话。
从设计的角度来看,这一个我应该遵循:
- django看来,通过阿贾克斯,返回的内容表作为json响应,包含html标记的每个细胞。Javascript回调处理程序的内容和拍打它们触及到表中的细胞。
- django看来,通过阿贾克斯,回返纯粹的数据关于什么应该进入该表,再次作为一个json响应。异步javascript回调需数据、格式他们有适当的标记,并把它放到桌上。
换句话说,谁应有责任标记的单元格内容的格式?视或javascript?
我会忍不住要说的第一个,因为查看已经返回标记的内容。如果返回json含有标记的内容,没有多少差别。
我想听听你的观点。
没有正确的解决方案
其他提示
如果你填充的整个表,你可以把你表在其自己的模板和返回的表html通过ajax/手机中。
你会需要编辑的原始模板包含的表格的模板:
{% include "myapp/_table.html" %}
和景,返回所呈现的模板作为json变量,其javascript将取代:
return { 'table': render_to_string("myapp/_table.html", context) }
这种做法是很好的,你总是想要更新的整个表,以及渲染的表并不需要完整的背景下。我不确定什么样的性能,但这是一个干净的方式更新网页的一部分,因为你只定义表一次。
它取决于(经常).
如果数据被请求只有在这里和现在,它会更容易,更容易出错的只是让它在服务器上呈现与一组相同的模板,这些模板已经呈现的标准图。
如果你能想到的使用情况然而,其中的数据,将需要在其他地方(如自动完成的领域),就能更好地让JavaScript做的工作,并创造一个干净的、可重复使用的JSON出口。
这些选项添加到所有其他的答案,以及最后,它是由你来决定。
在一个 MVP 系统如Django、观决定哪些数据应该显示的,该主持人决定如何,它应该显示出来。因此JavaScript应该做大部分的格式,除非证明intractably难以这样做。
这是一个良好的实践Unabstrusive javascript,也称为一些人因为 Hijax
那么,你第一次有一个标准页,提出了表以及其他网页,表在一个特定的django模板块。
一旦你有了这个,你可以包括延伸部分的django模板内的一个"如果没有ajax",所以你只能得到所需的表一部分的响应阿贾克斯,你可以载在客户所需要的div。
这是联合国必要的冗余,以保持标记两次,一次在服务器一旦在的客户,在javascript。
因此,我喜欢第一个选项,服务器redering,客户只有载入呈现html。
我会去的第一选择,正弦它提出了更利于使用者:网页载瞬间(没有等待异步通话),没有JS需要(例如为移动装置)