假设我有一个网站,其中包含一个小应用程序,其中列出了10个最新成员,或类似动态的内容。我想在每个页面上查看,也许在侧边栏中查看。我将如何做到这一点。
我对此事的看法。我可能还没有得到整个django的东西,但是当我有一个像/ foo /调用视图栏的网址时 - 但我必须从这个视图发送到模板的信息。每个视图都必须将信息发送到模板(只是这样我可以查看我的应用程序)或者是否有人从模板中调用此信息。
我试过阅读文档,但似乎我无法理解这一点。
答案 0 :(得分:4)
从其他应用程序提供“10种最新成员”类型信息的常用方法是通过模板标记。请参阅James Bennett关于最佳做法的this article(尽管请注意它有点过时,因为它是在inclusion_tag
和simple_tag
快捷方式可用之前编写的。
答案 1 :(得分:1)
“每个视图都必须将信息发送到模板(只是这样我才能查看我的应用程序)”
是
“有人在某种程度上从模板中调用它。”
没有
您的观点只是功能。函数可以调用其他函数。这是普通的好设计。你仍然可以在Django中做普通的好设计。
您确实能够提供“上下文”。这仍然在视图中完成,以便为模板提供额外的“上下文”。有关编写自己的上下文处理器的信息,请参阅http://docs.djangoproject.com/en/dev/ref/templates/api/#writing-your-own-context-processors。
除了将视图提供的对象渲染为HTML(或XML)之外,在模板中完成任何事情(几乎没有任何事情)。
如果你有一个页面是许多小应用程序中的东西的合并,那么你有两层应用程序。
独立应用。
依赖于复合或独立应用的复合应用。
您的复合应用可以调用其他应用视图功能来收集数据。
您的复合应用模板可以包含其他应用模板元素来显示该数据。
您拥有Python的所有功能,可以将独立应用程序分解为“数据生成”功能,查看功能,模板组件和最终页面模板。
独立的应用页面将使用视图功能和模板。视图功能将使用数据生成功能。模板将使用模板组件。
即使在Django中,分解仍然有效。
答案 2 :(得分:1)
我确信还有其他方法可以做到这一点,但那些可能是最合乎逻辑的两种方式。第一个为您提供更多功能,并且浪费更少的处理时间(对于您不想显示数据的页面),但上下文处理器更容易编写(您不必向后弯曲以取悦template_tag神)。
两者都是有价值的东西,所以你去。去学习!