我希望在我的django模板中包含twitter状态或美味标签等内容。

这些东西是动态的,而且是规律的。怎么会这样做?

有帮助吗?

解决方案

有很多方法可以解决这个问题,因此您可以选择最符合您个人风格或要求的方法:

  1. 模板上下文变量:正如Alex所回答的那样,您可以将内容放入上下文变量中,该变量包含在每个视图创建的每个模板的上下文中。 Django甚至提供了一种自动执行此操作的机制,称为上下文处理器。优点:非常简单。缺点:不会动态刷新客户端浏览器上的新内容。

  2. AJAX动态加载:正如Alex和Dave所提到的,您可以使用AJAX方法动态加载内容。作为使用jQuery的示例,您可以在模板中放置类似<div id="twitterfeed"></div>的占位符,然后在模板中的javascript块中放置$("#twitterfeed").load("{% url twitterfeed %}");,其中twitterfeed是在urls.py中命名的URL。优点:将动态更新浏览器。缺点:如果您不了解Javascript,可能会很棘手。

  3. 包含标记:Django提供了一种名为包含标记,它基本上是一个可以呈现动态内容的自定义模板标记。在某种程度上,它类似于上下文变量,除了生成内容的代码只有在模板中使用自定义模板标记而不是为每个视图调用时才会被调用。另一个好处是内容是从它自己的模板生成的。当然,您可以使用普通的上下文变量执行此操作,但它不像使用包含标记那样干净(IMHO)。优点:非常简单,干净。缺点:不会动态刷新客户端浏览器上的新内容。

其他提示

最简单的方法是在模板中使用{{ mycontent }}(您希望动态生成的内容出现在哪里),并将mycontent及其值之间的对应关系放在用于呈现模板的上下文中 - 即, django模板中最基本的部分。

如果你的意思是你想要Ajax支持,那么页面上的Javascript会根据服务器在任何给定时间想要的内容不断刷新这些内容,我建议查看 dojango ,Dojo / Django集成项目 - 它还没有完全成熟,因为每个Dojo和Django都是自己的(不是版本) 0.4尚),但它已经可以使用了。

一种常见的技术是在生成的内容中留下占位符div,然后通过您在页面中包含的Javascript调用AJAX来填充客户端的div。

这为您提供了具有可缓存(快速加载)主页面的好处,具有单独的动态位。根据您想要动态位的实时情况,您甚至可以将它们缓存为更短的持续时间。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top