如何将动态生成的内容块放入 django 模板?

chi*_*gsy 1 django django-templates

我想在我的 django 模板中包含诸如 twitter 状态或美味标签之类的东西。

这些东西是动态的,但有规律。这将如何完成?

Van*_*ale 5

有多种方法可以处理此问题,因此您可以选择最符合您个人风格或要求的方法:

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

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

  3. 包含标签:Django 提供了一种称为包含标签的模板标签,它基本上是一个可以呈现动态内容的自定义模板标签。在某种程度上,它类似于上下文变量,不同之处在于生成内容的代码只会在您在模板中使用自定义模板标签时调用,而不是为每个视图调用。另一个好处是内容是从它自己的模板生成的。当然,您可以使用普通的上下文变量来做到这一点,但它不像使用包含标签那么干净(恕我直言)。优点:非常简单,干净。缺点:不会在客户端浏览器上动态刷新新内容。