4

我想为我的 web 应用程序制作一个侧边栏。它包含以下内容:

  • 一个搜索栏
  • 标签列表
  • 最近帖子的链接(带有年份和月份)

我想在每个站点/视图中包含这个侧边栏。所以我的第一个猜测是它属于一个布局。但它也是动态的,据我所知布局是静态的。

如何避免视图/布局中的冗余并且仍然在每个站点上都有侧边栏?

4

2 回答 2

3

要将上下文数据传递给多个模板,您在 django 中有不同的选项;您可以:

  • 制作一个模板标签,它可以提取相关数据并将其呈现并在您需要的每个模板中重用它(或者只是将其插入基本模板并使用模板继承)。

  • 使用上下文处理器:每个请求都会调用它,并将数据添加到使用RequestContext.

  • 使用 Django 的基于类的视图,您可以让所有视图都继承自一个基础视图,该基础视图将数据添加到您的上下文中。

如果您需要数据库中的数据,我宁愿使用模板标签而不是使用上下文处理器,因为它将为每个视图调用。

于 2012-08-08T08:55:21.590 回答
1

对于侧边栏中的静态内容(例如搜索表单),它是直接的模板/html。

对于动态内容,如标签列表、最近的帖子:一旦在模板中确定了放置此信息的元素(div 或其他内容),您可以使用自定义模板标签或自定义上下文处理器填充其内容。

在您的情况下,如果内容并不真正依赖于请求参数或 url,那么模板标签将是更好的选择。

参考自定义模板标签 自定义上下文处理器

于 2012-08-08T08:58:34.833 回答