【发布时间】:2010-12-15 16:23:26
【问题描述】:
假设您有一个名为“View Story”的视图,它只是一个通过 Python/Django 在后端呈现的网页。在该页面上,底部有一个 cmets 列表,作为“查看故事”模板的一部分,使用 Django 的模板系统(在循环中)。此页面还允许您向列表添加评论。这是通过 AJAX 完成的,页面会使用新评论进行更新(无需发送新的整页请求)。
现在,在将新评论添加到列表末尾时,我希望为该新评论生成的 HTML(<li> 中的内容)使用与生成发送到的原始 cmets 完全相同的代码客户端通过原始请求。
有多种方法可以做到这一点:
让初始渲染将评论数据放入一个 javascript 变量中,并在渲染页面后通过 javascript 添加内容。然后,当添加新的 cmets 时,可以使用相同的 javascript 来呈现新的 cmets。问题:从搜索引擎的角度来看,如果它们是在页面呈现后生成的,我不确定谷歌是否能够索引 cmets - 我猜不是
每次通过 AJAX 添加新评论时,让 ajax 请求返回要放在页面上的实际 HTML,而不仅仅是新评论的 JSON 数据。可以使用用于呈现原始页面的相同模板 sn-p 生成 HTML。这样做的问题在于,它将 AJAX 请求与特定视图或我不喜欢的呈现方式联系在一起。
与 #2 类似,只是发出了单独的请求来检索新评论的 HTML,或者可能是所有 cmets,并且列表只是被擦除并重新呈现。不喜欢这样,因为它非常低效且不必要地耗时。
因此,总而言之,我想要一种方法来避免为单个视图重复模板/HTML 代码。而且我想就对其他人有效的方法提出一些建议,因为我很确定这是一个常见的情况,无论后端的技术如何。
谢谢!
【问题讨论】:
标签: javascript python ajax django