带有django、布局或视图的侧边栏?

带有django、布局或视图的侧边栏?,django,Django,我想为我的Web应用程序制作一个侧栏。它包含以下内容: 搜索栏 标签列表 最近发布的链接(带有年份和月份) 我希望在每个站点/视图中都包含此侧边栏。所以我的第一个猜测是它应该属于一个布局。 但它也是动态的,据我所知,布局是静态的 如何避免视图/布局中的冗余,并在每个站点上保留侧栏?要将上下文数据传递到多个模板,django中有不同的选项;你可以: 制作一个可以拉入相关数据并呈现它并在需要的每个模板中重用它(或者只需将其插入基础模板并使用)的模板 使用a:它将随每个请求一起调用,并将数据添加

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

  • 搜索栏
  • 标签列表
  • 最近发布的链接(带有年份和月份)
我希望在每个站点/视图中都包含此侧边栏。所以我的第一个猜测是它应该属于一个布局。 但它也是动态的,据我所知,布局是静态的


如何避免视图/布局中的冗余,并在每个站点上保留侧栏?

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

  • 制作一个可以拉入相关数据并呈现它并在需要的每个模板中重用它(或者只需将其插入基础模板并使用)的模板

  • 使用a:它将随每个请求一起调用,并将数据添加到使用
    RequestContext
    的每个视图的上下文中

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


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

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

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

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


参考

这当然是基于类的视图优于功能视图的地方。@JoshSmeaton:完全同意这一点,但是在文档和演示文稿中很少提到使用基于类的继承视图将数据添加到多个视图的上下文中的好处!