在模板中调用小应用程序

时间:2009-11-20 17:54:21

标签: django django-templates views

假设我有一个网站,其中包含一个小应用程序,其中列出了10个最新成员,或类似动态的内容。我想在每个页面上查看,也许在侧边栏中查看。我将如何做到这一点。

我对此事的看法。我可能还没有得到整个django的东西,但是当我有一个像/ foo /调用视图栏的网址时 - 但我必须从这个视图发送到模板的信息。每个视图都必须将信息发送到模板(只是这样我可以查看我的应用程序)或者是否有人从模板中调用此信息。

我试过阅读文档,但似乎我无法理解这一点。

3 个答案:

答案 0 :(得分:4)

从其他应用程序提供“10种最新成员”类型信息的常用方法是通过模板标记。请参阅James Bennett关于最佳做法的this article(尽管请注意它有点过时,因为它是在inclusion_tagsimple_tag快捷方式可用之前编写的。

答案 1 :(得分:1)

“每个视图都必须将信息发送到模板(只是这样我才能查看我的应用程序)”

“有人在某种程度上从模板中调用它。”

没有

您的观点只是功能。函数可以调用其他函数。这是普通的好设计。你仍然可以在Django中做普通的好设计。

您确实能够提供“上下文”。这仍然在视图中完成,以便为模板提供额外的“上下文”。有关编写自己的上下文处理器的信息,请参阅http://docs.djangoproject.com/en/dev/ref/templates/api/#writing-your-own-context-processors

除了将视图提供的对象渲染为HTML(或XML)之外,在模板中完成任何事情(几乎没有任何事情)。


如果你有一个页面是许多小应用程序中的东西的合并,那么你有两层应用程序。

  • 独立应用。

  • 依赖于复合或独立应用的复合应用。

您的复合应用可以调用其他应用视图功能来收集数据。

您的复合应用模板可以包含其他应用模板元素来显示该数据。

您拥有Python的所有功能,可以将独立应用程序分解为“数据生成”功能,查看功能,模板组件和最终页面模板。

独立的应用页面将使用视图功能和模板。视图功能将使用数据生成功能。模板将使用模板组件。

即使在Django中,分解仍然有效。

答案 2 :(得分:1)

  1. 创建可在页面上调用的模板标记
  2. 创建上下文处理器并在每个页面加载上注入额外的上下文变量
  3. 我确信还有其他方法可以做到这一点,但那些可能是最合乎逻辑的两种方式。第一个为您提供更多功能,并且浪费更少的处理时间(对于您不想显示数据的页面),但上下文处理器更容易编写(您不必向后弯曲以取悦template_tag神)。

    两者都是有价值的东西,所以你去。去学习!